Эта форма должна позволять пользователю задавать параметры студентов при добавлении новых студентов и редактировании старых (см. Рисунок 6.14).
Рисунок 6.14 – Форма редактирования параметров студента
Форма редактирования книг
Форма должна позволять пользователю задавать параметры книги при редактировании и изменять параметры существующих книг (см. Рисунок 6.15).
Рисунок 6.15 – Форма редактирования параметров книг
Форма отображения списка книг
Форма должна отображать список всех книг, для того чтобы можно было выбрать книгу при выдаче её студенту (см. Рисунок 6.16).
Рисунок 6.16
– Форма отображения списка книг
После создания форм необходимо подключить классы для этого необходимо их создать и использовать.
Подключение классов
После создания форм к интерфейсу нужно подключить классы. Для этого в главной форме проекта реализуем два события:
– 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;
Сохранение проекта
Для того чтобы сохранить проект нужно в главном меню выбрать File → Save All. При нажатии этой кнопки появится диалог сохранения файла, в котором нужно указать имя и место расположения файла.
Рекомендуется файл проекта называть исходя из названия предметной области (Students, Users, Library), файлы форм называть исходя из функциональности формы при этом использовать префикс «fm» (fmUser, fmBook, fmGroup), файлы классов нужно называть по именам классов используя при этом префикс «Class» (ClassUser, ClassBook, ClassGroup).
Задание
Нужно разработать приложение в Borland Developer Studio в соответствии с тематикой курсового проекта по предмету «Технологи разработки программного обеспечения». Приложение должно работать с реляционной СУБД, например FireBird, а его архитектура соответствовать трехслойной архитектуре на базе объектно-реляционного отображения с типизированными объектами.
Контрольные вопросы
1) Что такое трехслойная архитектура?
2) Структура проекта Borland Developer Studio 2006.
3) Отношения между классами в Developer Studio.
4) Типовая структура слоя реляционного отображения.
5) Классы слоя бизнес-логики, их особенности.
6) Типизированные объекты.
7) Разработка классов с использованием редактора UML. Достоинства и недостатки.
8) Заполнение данными компонента TDBGrid.
9) Работа с данными через компонент TComboBox.