Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по циклу лабораторных работ Технологии разработки программного обеспечения .doc
Скачиваний:
204
Добавлен:
06.03.2016
Размер:
3.8 Mб
Скачать
      1. Форма редактирования параметров студента

Эта форма должна позволять пользователю задавать параметры студентов при добавлении новых студентов и редактировании старых (см. Рисунок 6 .40).

Рисунок 6.40 – Форма редактирования параметров студента

      1. Форма редактирования книг

Форма должна позволять пользователю задавать параметры книги при редактировании и изменять параметры существующих книг (см. Рисунок 6 .41).

Рисунок 6.41 – Форма редактирования параметров книг

      1. Форма отображения списка книг

Форма должна отображать список всех книг, для того чтобы можно было выбрать книгу при выдаче её студенту (см. Рисунок 6 .42).

Рисунок 6.42– Форма отображения списка книг

После создания форм необходимо подключить классы для этого необходимо их создать и использовать.

      1. Подключение классов

После создания форм к интерфейсу нужно подключить классы. Для этого в главной форме проекта реализуем два события:

  • OnCreate– по этому событию создаётся объектTConnection, выполняется подключение к БД, и создаются объекты класса бизнес логики.

  • OnClose– по этому событию удаляются все созданные объекты.

Для создания событий:

  • выберите объект в конструкторе форм, для которого вы хотите создать событие;

  • откройте вкладку Events в области инспектора

  • найдите требуемое событие и дважды щелкните по нему, при этом откроется редактор исходного кода на месте только что созданного события.

Пример кода для события OnCreateнашего приложения представлен ниже:

var

//Объявление переменной класса по работе с ini файлами

ini: tinifile;

// Объявление переменных для хранения параметров подключения

servername, path: string;

begin

try

//Подключение к ini – файлу

ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'config.ini');

// Чтение имени сервера, к которому необходимо подключиться, если

// он пустой значит не введен

if ini.ReadString('options','servername','')='' then

begin

servername:='localhost';

//Отображение диалога ввода имени сервера

if InputQuery('Введите имя сервера','',servername) then

begin

// Запись имени сервера в ini - файл

ini.WriteString('options','servername',servername);

end;

end;

// Чтение имени сервера

servername:=ini.ReadString('options','servername','');

// Чтение пути к файлу БД, если он пуст.

if ini.ReadString('options','path','')='' then

begin

// Вывод диалога ввода пути к файлу БД

if InputQuery('Введите путь к файлу БД','',path) then

begin

// Запись пути к файлу БД в ini - файл

ini.WriteString('options','path',path);

end;

end;

// Чтение пути к файлу БД из ini - файла

path:=ini.ReadString('options','path','');

try

// Создание объекта подключения

fConnection:=TConnection.Create;

// Установка параметров поключения

fConnection.ServerName:=servername;

fConnection.DataBaseName:=path;

fConnection.UserName:='SYSDBA';

fConnection.Password:='masterkey';

// ПодключениекБД

fConnection.Connect;

except

// В случае установки неправильных параметров подключения возникнет исключительная ситуация

ShowMessage('Неправильные параметры подключения');

// Освобождение объекта подключения

freeandnil(fConnection);

// Закрытие формы приложения

fmMain.Close;

// Закрытие приложения

Application.Terminate;

// Выход из события

Exit;

end;

finally

// Удаление из памяти переменной класса по работе с ini - файлом

FreeAndNil(ini);

end;

// Создание класса слоя Бизнес – логики по работе со студентами

fStudents:=TStudents.Create(fConnection,fConnection.TransactionObject);

// Установка источника данных для сетки строк, отображающей список // студентов

dbgStudents.DataSource:=fStudents.DataSource;

// Выбор данных

fStudents.Select;

// Создание класса слоя Бизнес – логики по работе с книгами

fBooks:=TBook.Create(fConnection,fConnection.TransactionObject);

// Установка источника данных для сетки строк, отображающей список книг

dbgBooks.DataSource:=fBooks.DataSource;

// Выбор данных

fBooks.Select;

// Создание класса слоя Бизнес – логики по работе с выданными книгами

fStudentBook :=TStudentBook.Create(fConnection, fConnection.TransactionObject);

// Установка события происходящего при перемещении между записями

fStudents.OnAfterScroll:=StudentsAfterScroll;

// Загрузка параметров выбранного студента в поля объекта

fStudents.LoadCurrent;

// Установка полей объекта

fStudentBook.fk_student:=fStudents.id;

// Выбор данных

fStudentBook.Select;

// Установка источника данных для сетки строк, отображающей список // выданных книг

dbgStudentsBook.DataSource:=fStudentBook.DataSource;

end;

Для каждого действия в компоненте TActionManagerнеобходимо реализовать событиеOnExecute, в котором будет происходить вызов классов слоя бизнес-логики. Например:

Try

// Загрузка параметров выбранного студента в поля объекта

fStudents.LoadCurrent;

// Создание формы

fmChangeStudent:=TfmChangeStudent.Create(Application);

with fmChangeStudent do

begin

// Заполнение значений компонентов на форме

seNum.Value:=fStudents.Num;

edFamily.Text:=fStudents.Family;

edName.Text:=fStudents.Name;

edSecondName.Text:=fStudents.SecondName;

// Заполнения списка отображаемого в компоненте TComboBox

cbGroup.Items.AddStrings(fStudents.GroupList);

// Установка значения отображаемого в компоненте TComboBox

cbGroup.ItemIndex:=cbGroup.Items.IndexOf(fStudents.Group);

end;

// Если пользователь нажал кнопку Принять

if fmChangeStudent.ShowModal=mrOk then

begin

// Заполнение полей объекта

with fStudents do

begin

Num:=fmChangeStudent.seNum.Value;

Family:=fmChangeStudent.edFamily.Text;

Name:=fmChangeStudent.edName.Text;

SecondName:=fmChangeStudent.edSecondName.Text;

Group:=fmChangeStudent.cbGroup.Text;

// Вызов метода обновляющего запись в таблице

Update;

end;

end;

finally

//Удаление из памяти формы

FreeAndNil(fmChangeStudent);

end;