Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laboratornye_raboty.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

Практическая часть

Запускаем Delphi,  выбираем File -> New-> VCL Forms Application - Delphi

и получаем на экране

Теперь сохраним наш проект в нужную нам папку (у меня папка sclad) и назовем файл (модуля pas) как  general, а файл проекта storage. Для этого выбираем File->Save Project As

Далее размещаем на форме  компонент TADOConnection вкладки dbGo (старое название ADO).

Перед настройкой подключения к базе, необходимо скопировать файл базы данных (storage.mdb), созданный на прошлом уроке в папку с проектом.

Начинаем подключение…

Выделяем компонент TADOConnection и в свойстве LoginPromt ставим на False. Это делаем для того, чтобы при подключении к БД пароль у нас не запрашивался, дальше в свойстве ConnectionString нажимаем на кнопку с «…» и видим:

В окне нажимаем на кнопку «Build…» и появляется следующее окно:

Выбираем провайдера, а именно Microsoft Jet 4.0 OLE DB Provaider и нажимаем кнопку «Далее».

В данном окне мы указываем путь к нашей БД и имя пользователя по умолчанию Admin , жмем кнопку «Ок». Если ваша БД находится в корневом каталоге с программой, то в данном поле достаточно указать ее имя с расширением, примерно так storage.mdb. Обратите внимание, если вы укажите полный путь к базе, то при переносе на другой компьютер путь к БД будет не найден!!!

В свойстве компонента TADOConnection – Mode выбрать из выпадающего списка cmShareDenyNone, а  свойство TADOConnection – Connected ставим True. Все подключение к базе активировано.

Сохраняем наш проект. 

Вопросы для контроля

  1. Для чего нужен VCL Forms Application?

  2. Что такое TADOConnection и для чего он служит?

  3. Из каких частей состоит окно Delphi?

  4. Зачем нужен Unit?

  5. Для чего нужен Project?

Литература

  1. Фаронов В.В. Программирование на языке высокого уровня: Учебник для вузов. -СПб.: Питер, 2003.

  2. Бобровский С.И. Delphi 7. Учебный курс. - СПб.: Питер, 2005.

  3. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Visual Basic, C++ Builder, Delphi. - СПб.: БХВ - Петербург, 2005.

ЛАБОРАТОРНАЯ РАБОТА № 3

Тема: Создание главной формы программы склад (продолжение)

Цель: Создание формы для базы данных созданной в MS Access

Оборудование и/или программное обеспечение: ПК, Delphi

Теоретическая часть

   Все новые формы автоматически заносятся в разряд автосоздаваемых, то есть в начале работы программы они будут автоматически создаваться сразу, одновременно с первой, главной Формой проекта. Нам не придётся этим заниматься в программе, но одновременное создание многих форм занимает ресурсы и время программы. Поэтому предлагаю сразу научиться создавать нужные формы только в нужный момент.    Во-первых, нужно отменить автосоздание форм. Выполните команду меню Project -» Options... В появившемся окошке отображаются Main form (главная Форма), Auto-create (автосоздаваемые) и Available(доступные) формы проекта. Нам нужно перевести Форму из разряда автосоздаваемых в разряддоступных Форм. Делается это нажатием кнопки " > " (обратная операция - нажатием кнопки " < "):

   Таким образом, главная Форма Form3 создаётся сама, а дополнительную форму Form2 мы создадим в программе при необходимости.    Если этого ничего мы не предприняли (что вполне допустимо при малом количестве дополнительных форм), то для появления новой Формы на экране достаточно написать:    Form2.Show; // в случае обычной Формы    Form2.ShowModal; // в случае модальной Формы Если же мы перевели дополнительные Формы в разряд доступных, то перед каждым вызовом такой Формы необходимо делать проверку на существование Формы (оператором Assigned) таким образом:    if (not Assigned(Form2)) then   // проверка существования Формы (если нет, то        Form2:=TForm2.Create(Self);    // создание Формы)    Form2.Show; // (или Form2.ShowModal) показ Формы    Теперь разберёмся в разнице между обычными и модальными Формами. Обычные Формы позволяют свободно переходить между всеми Формами, находящимися в данный момент на экране. Модальная Форма в момент вызова блокирует переход между Формами проекта до тех пор, пока не будет закрыта, и работа возможна только в ней.    При попытке компилирования программы, содержащей вызов второй формы, Delphi выдаст такой запрос:

означающий:

Форма Form2 содержит вызов формы Form3, которая объявлена в модуле Unit3, но который отсутствует в списке используемых модулей. Вы хотите добавить его?

Нужно разрешить, и в начале модуля перед директивой {$R *.dfm} будет добавлена фраза uses Unit2;    В принципе, можно добавить её туда перед компиляцией "ручками", и тогда запроса не будет. Но смысл? Отвечаем "Yes" и снова жмём F9.

   Первым делом введём в форму операцию её закрытия! Сделать это можно несколькими способами. Возьмём кнопку, напишем "Закрыть" и в обработчике OnClick напишем: Form2.Close; //В принципе, достаточн просто Close;

   Теперь же необходимо рассмотреть способ закрытия Формы, который относится именно к модальнымформам. Он используется диалоговыми окнами с вопросом, требующим подтверждения, и в других аналогичных случаях. На Форме нужно расположить несколько кнопок, нажатие которых предполагает соответствующий ответ: "Да", "Нет", "Отмена", и т.д.     У каждой кнопки есть свойство ModalResult, среди значений которой mrYesmrNomrCansel и другие (посмотрите!). Значение ModalResult выбранной кнопки передаётся свойству ModalResult Формы. Это свойство отсутствует в списке свойств Формы, которые можно увидеть в Инспекторе Объектов, но программно оно доступно (напишите " Form2 ", поставьте точку и поищите в появившемся списке!).     Нажатие кнопки со значением свойства ModalResult, отличного от mrNone, приводит к закрытию Формы, даже если у кнопки отсутствует обработчик нажатия! Затем можно проанализировать свойство ModalResultФормы и выяснить, какой же ответ на поставленный вопрос дал пользователь:

procedure TForm3.Button1Click(Sender: TObject); begin   Form2.ShowModal;   if Form2.ModalResult=mrYes then   // Этот оператор          будет доступен только после закрытия Form2   Form3.Caption:='Пользователь ответил положительно!'; end;

  Как видно из этого примера, для доступа из одной Формы как к свойствам другой Формы, так и к свойствам её компонентов необходимо указывать имя Формы, к которой мы обращаемся. Мы также имеем доступ к данным, использующимся в модуле, описывающим её работу. Для этого необходимо указывать уже имя модуля. Например, для обращения к переменной X из модуля Unit2 пишем так: Unit2.X.    Имеющейся возможности укрыть данные от использования в других модулях касаться пока не будем.    В момент закрытия Формы часто в программе необходимо выполнить определённые операции. Делается это в обработчике события OnClose Формы. А теперь рассмотрим блокировку закрытия Формы. Если вдруг понадобится заставить пользователя выполнить определённые действия перед закрытием Формы (это касается как дополнительных форм, так и основной Формы программы), нужно воспользоваться обработчиком события OnCloseQuery. В этом обработчике определена переменная логического типаCanClose. Форма будет закрыта только в том случае, когда    CanClose:=True; Например, если создать такой обработчик OnCloseQuery основной Формы программы: procedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin   CanClose:=False; end;

то пользователь просто не сможет закрыть программу иначе как через Диспетчер задач Windows!

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]