Компонент PanelMain типа TPanel является контейнером для двух других панелей (объектов типа TPanel) PanelGrid, PanelMemo и разделителя Splitter1 типа TSplitter. Объект Splitter1 располагается между панелями PanelGrid и панель PanelMemo и предоставляет возможность изменять их размеры. Компонент PanelGrid в свою очередь является контейнером для таблицы DBGrid1 типа TDBGrid и панели Panel2 типа TPanel, содержащей название таблицы. Компонент PanelMemo также является контейнером для редактора DBMemo1 типа TDBMemo и панели Panel1 типа TPanel, содержащей заголовок редактора.
Компонент DBMemo1 связан с мемо-полем БД Sections и предназначен для его отображения на форме. Связь между данным компонентом и БД устанавливается посредством задания свойству DataSource значения DataModule1.DataSource1.
Компонент DBGrid1 связан с БД и предназначен для отображения представления VBooks на форме. Связь между данным компонентом и БД устанавливается посредством задания свойству DataSource значения DataModule1.DataSource1. В данном компоненте прописаны обработчики трёх событий OnColExit, OnDrawColumnCell и OnKeyPress. В методе TMainForm.DBGrid1ColExit при выходе из ячейки таблицы поле редактирования Edit1 снова становится невидимым. В обработчике события TMainForm.DBGrid1DrawColumnCell вместо прорисовки ячейки таблицы прорисовывается поле редактирования Edit1 и весь ввод направляется к нему. В методе TMainForm.DBGrid1KeyPress в случае нажатия клавиши Enter фокус ввода перемещается на компонент Edit1.
база файл домен сервер
5.3.3 Модуль данных DataModule1 и модуль DBUnit
Модуль данных DataModule1 типа TdataModule является контейнером для невизуальных компонентов, связанных с БД. Также он включает в себя методы для установления параметров, уровня доступа и соединения с БД, вызова хранимых процедур и фильтрации БД. Ниже рассмотрим все данные методы и объекты.
Метод TDataModule1.Connect производит соединение с БД. Сначала Определяются параметры соединения (диалект SQL, кодировка символов, имя и пароль пользователя, путь к базе данных), затем непосредственно осуществляется соединение.
Метод TDataModule1.InitDBParams начальную инициализацию параметров соединения с БД и далее вызывает метод TDataModule1.Connect для осуществления соединения. Параметры берутся из командной строки, а если они отсутствуют, то из файла инициализации программы.
Метод TDataModule1.SetAccess осуществляет установку уровня доступа пользователя (возможность просмотра/изменения или только возможность просмотра данных ДБ) путём вызова хранимой процедуры IsWriter. В случае, если не возникает исключения, то пользователь обладает полным доступом, в ином случае – только просмотр.
Три следующих метода TDataModule1.CallInsertBook, TDataModule1.CallDeleteBook и TDataModule1.CallUpdateBook осуществляют соответственно вставку нового источника, удаления существующего источника или редактирования существующего источника посредством вызова хранимых на стороне сервера процедур InsertBook, DeleteBook и UpdateBook.
Метод TDataModule1.SetFilter устанавливает заданные параметры фильтрации записей БД и включает режим локальной фильтрации.
Метод TDataModule1.IsFieldContainStr проверяет, содержит ли заданное поле заданную подстроку.
Объект IBTransaction1 типа TIBTransaction предназначен для осуществления транзакций БД. Он связывается с компонентом БД посредством задания его свойству DefaultDatabase значения IBDatabase1.
Объект IBDatabase1 типа TIBDatabase предназначен для осуществления соединений с БД. Он связывается с компонентом транзакций посредством задания его свойству DefaultTransaction значения IBTransaction1.
Компонент IBDataSet1 типа TIBDataSet предназначен для манипулирования набором данных, получаемом посредством SQL-запроса к БД. Для соединения с БД свойству компонента Database присваивается имя IBDatabase1. Он связывается с компонентом транзакций посредством задания его свойству Transaction значения IBTransaction1. Объект имеет два определённых обработчика событий AfterScroll и OnFilterRecord.
Компонент IBStoredProc1 типа TIBStoredProc предназначена для вызова хранимых на сервере процедур вставки, удаления источников и проверки доступа. Компонент связан с объектами IBDatabase1 и IBTransaction посредством задания соответствующих свойств.
Компонент DataSource1 типа TDataSource предназначен для связи набора данных БД с таблицей БД, то есть является источником данных для таблицы MainForm.DBGrid1. Используется набор данных IBDataSet1.
5.3.4 Форма EditFormи модуль Edit
Форма EditForm представляет собой диалоговое окно, предназначенное для задания пользователем атрибутов новой или редактируемой записи. Форма является контейнером для визуальных компонентов и одного невизуального компонента OpenDialogArc типа TOpenDialog. Он является стандартным диалогом Delphi для открытия файла и предназначен для выбора архива, содержащего файлы источника.
При активизации формы, выполняется метод EditForm.FormActivate, который в свою очередь для каждого комбинированного списка вызывает метод TEditForm.SetComboBox, в котором он заполняется соответствующими значениями из БД.
Ниже рассматриваются все визуальные компоненты формы.
На форме располагаются две панели типа TPanel: Panel1 и Panel2. Они выполняют роль контейнеров для других визуальных элементов и предназначены для облегчения проектирования формы и улучшения её дизайна. На панели Panel1 расположены управляющие кнопки окна, а на панели Panel2 поля ввода, метки к ним и переключатели.
Управляющие кнопки окна представляют собой компоненты BOK и BCancel типа TbitBtn и предназначены для подтверждения (внесения в БД) или отмены введённых в полях ввода данных. Они я являются кнопками предопределенных типов. Свойству Kind этих компонентов присвоены значения bkOK и bkCancel соответственно. Кнопка BOK генерирует результат закрытия формы mrOK, а BCancelmrCancel, которые обрабатываются в соответствующих процедурах.
На панели Panel2 располагаются GroupBoxData типа TGroupBox, GroupBoxSection типа TGroupBox, RadioGroupSource типа TRadioGroup и GroupBoxPath типа TGroupBox.
Компонент GroupBoxData предназначен для выделения компонентов ввода параметров источника и является контейнером для комбинированных списков ввода параметров (типа TComboBox) и меток к ним (типа TLabel): ComboBoxAut и LabelAut – автор источника, ComboBoxTit и Labeltit – название источника, ComboBoxLan и LabelLan – язык источника.
Компонент GroupBoxSource предназначен для выделения поля ввода/редактирования тем, связанных с источником, Memo1 типа TMemo и является контейнером для него.
Компонент RadioGroupSource предназначен для выбора физического расположения файлов источника (дисковый каталог, файл архива или одиночный файл).
Компонент GroupBoxPath предназначен для выделения компонентов ввода путей к файлу (файлам) источника и является контейнером для меток к полям редактирования типа TLabel, полей ввода типа TEdit и кнопок типа TBitBtn для активизации диалогов поиска элементов ввода.
5.3.5 Форма DeleteFormи модуль Delete
Форма DeleteForm представляет собой диалоговое окно, предназначенное для подтверждения или отмены пользователем удаления выбранной записи. Форма является контейнером для пяти визуальных компонентов.
Компонент Bevel1 типа TBevel предназначен для выделения каймой изображения и текста. Компонент Image1 типа TImage выводит на форму изображение для большей наглядности диалогового окна. Компонент Label1 типа TLabel представляет собой вопрос диалогового окна. Компонент BNo и BYes типа TBitBtn являются управляющими кнопками окна и предназначены для подтверждения или отмены удаления.
5.3.6 Форма FindFormи модуль Find
Форма FindForm представляет собой диалоговое окно, предназначенное для задания атрибутов поиска записи в БД. Форма является контейнером для ряда визуальных компонентов. В данном компоненте определён обработчик события OnDeactivate – метод TFindForm.FormDeactivate, в котором, в случае задания пользователем, производится поиск записи стандартным методом Locate.
Форма делится на две части панелями Panel1 и Panel2 типа TPanel. На объекте Panel1 расположены управляющие кнопки BOK и BCancel типа TBitBtn, предназначенные для начатия поиска или его отмены. На панели Panel2 расположены компоненты групп gbValue и gbParam типа TGroupBox. В группу gbValue включены поля редактирования типа TEdit и метки к ним типа Tlabel для задания искомых значений. Поле EditNum и метка LabelNum служат для задания номера источника, поле EditAut и метка LabelAut – задание автора, поле EditTit и метка LabelTit – задание названия, поле EditLan и метка LabelLan– задание языка, поле EditSec и метка LabelSec – задание темы. В группу gbParam включены переключатели с независимой фиксацией типа TCheckBox: CheckBoxCase, предназначенный для задания поиска с учётом регистра символов, и CheckBoxSubStr, предназначенный для задания поиска с учётом подстрок.
5.3.7 Форма FilterFormи модуль Filter
Форма FilterForm представляет собой диалоговое окно, предназначенное для задания атрибутов фильтрации записи в БД. Форма является контейнером для ряда визуальных компонентов. В данном компоненте определён обработчик события OnDeactivate – метод TFindForm.FormDeactivate. В котором, в случае задания пользователем, производится установка фильтра при помощи вызова метода DataModule1.SetFilter.
Форма делится на две части панелями Panel1 и Panel2 типа TPanel. На объекте Panel1 расположены управляющие кнопки BBOK и BBCancel типа TBitBtn, предназначенные для задания начала фильтрации или выхода из диалогового окна. На панели Panel2 расположены компонент групп GBFilterValue и независимый переключатель CBCase типа TCheckBox, задающий необходимость поиска с учётом регистра символов. В группу GBFilterValue включены поля редактирования типа TEdit и метки к ним типа TLabel для задания допустимых значений. Поле EditAut и метка LabelAut предназначены для задания автора, поле EditTit и метка LabelTit – задание названия, поле EditLan и метка LabelLan– задание языка, поле EditSec и метка LabelSec – задание темы.
5.3.8 Форма DirSourceFormи модуль DirSource
Форма DirSourceForm представляет собой диалоговое окно, предназначенное для выбора каталога, в котором расположены файлы источника. Активация формы происходит при нажатии кнопки просмотра каталогов BBrowseDir на форме EditForm. Форма является контейнером для пяти визуальных компонентов.
Компонент Bevel1 типа TBevel предназначен для выделения каймой списка и дерева каталогов. Компонент BNo и BYes типа TBitBtn являются управляющими кнопками окна и предназначены для подтверждения или отмены выбора каталога.
5.3.9 Форма PathFormи модуль Path
Форма PathForm представляет собой диалоговое окно, предназначенное для задания сетевого пути к файлу БД. Форма является контейнером для ряда визуальных компонентов. В данном компоненте определёны обработчики события OnActivate – метод TPathForm.FormActivate и OnDeactivate – метод TPathForm.FormDeactivate. В первом методе, производится установка начальных значений полей редактирования, а во втором попытка соединится с новым файлом БД. Форма делится на две части панелями Panel1 и Panel2 типа TPanel. На объекте Panel1 расположены управляющие кнопки BBOK и BBCancel типа TBitBtn, предназначенные для задания нового пути или выхода из диалогового окна. На панели Panel2 расположены компоненты поля редактирования с метками типа TLabeledEditleServer, предназначенный для ввода имени сервера, и leFile, предназначенный для ввода локального пути к файлу БД на сервере.