- •1. Методика построения прикладной системы
- •1.1. Определение назначения и задач приложения
- •1.2. Проектирование бд и прикладных процессов
- •1.3. Реализация проекта
- •1.4. Тестирование приложения
- •1.5. Установка (инсталляция) приложения
- •2. Использование методики
- •2.1. Проектирование прикладных процессов
- •2.2. Реализация прикладной системы
- •2.2.1. Создание главной формы fmMainform
- •2.2.2. Создание формы fmAboutsys
- •2.2.3. Создание формы fmEditflat
- •2.2.4. Создание формы fmShowflat
- •2.2.5. Создание формы fmEditpers
- •4. Порядок выполнения лабораторной работы
- •6. Рекомендуемая литература
2.2.2. Создание формы fmAboutsys
Эта форма создается на базе стандартного шаблона Aboutbox, выбираемого на странице Templates в окне Browse Gallery, которое активизируется командой File|New Form. После включения шаблона в проект его нужно настроить, дополнив необходимыми компонентами, и подключить к пункту меню “О системе”.
Настройка шаблона начинается заданием значений свойств Name=fmABOUTSYS и Caption=О системе. Далее в форме fmABOUTSYS нужно исправить значения свойства Caption четырех компонентов Label, чтобы они соответствовали эскизу, показанному на рис.6, а у компонента Image установить свойство Picture, загрузив файл finance.bmp из каталога F:\DELPHI\SPLASH\256color.
Сохраним в каталоге D:\DELPHI\PROGRAM дополненный проект, выбрав команду File|Save Project и задав имя ABOUTSYS для файла с модулем формы fmABOUTSYS.
Созданную форму необходимо связать с пунктом меню в главной форме. Для этого после щелчка на пункте меню “О системе” в окне текстового редактора набирается оператор
fmABOUTSYS.ShowModal;
выполнение которого активизирует форму fmABOUTSYS, а в начале раздела Implementation модуля MAINFORM записывается предложение
uses ABOUTSYS;
2.2.3. Создание формы fmEditflat
Выберем команду File|New Form и нажмем в появившемся окне Browse Gallery кнопку ОК, чтобы включить в проект пустую форму Blankform.
Поместим в эту форму 5 компонентов Label для отображения поясняющего текста, 3 компонента DBEdit, 2 компонента Button, компонент DBComboBox и компонент DBNavigator, расположив их так, как показано на рис.7. Поместим также на любое свободное место в форме компоненты Table и DataSource.
Зададим значение свойства Name формы равным fmEDITFLAT и значения свойств других компонентов согласно табл.5.
Таблица 5
Свойства компонентов, расположенных на форме fmEDITFLAT
Name |
Caption |
Name | ||
Старое |
Новое |
|
Старое |
Новое |
Label1 |
laAddress |
Адрес |
DBEdit1 |
deAddress |
Label2 |
laSkv |
Площадь квартиры |
DBEdit2 |
deSkv |
Label3 |
laNrooms |
Число комнат |
DBEdit3 |
deNrooms |
Label4 |
laKCategory |
Категория квартиры |
DBComboBox1 |
dcKCategory |
Label5 |
laKvm |
Кв.м. |
Table1 |
taFLAT |
Button1 |
buExit |
Выход |
DataSource1 |
dsFlat |
Button2 |
buCancel |
Отмена |
DBNavigator1 |
naFLAT |
Name |
DatabaseName |
TableName |
DataSet |
DataSource |
DataField |
VisibleButtons |
taFLAT |
dbTUTOR |
FLAT.DB |
|
|
|
|
dsFLAT |
|
|
taFLAT |
|
|
|
naFLAT |
|
|
|
dsFLAT |
|
nbFirst, nbPrior, nbNext, nbLast |
deAddress |
|
|
|
dsFLAT |
Address |
|
deSkv |
|
|
|
dsFLAT |
Skv |
|
deNrooms |
|
|
|
dsFLAT |
NRooms |
|
dcKCategory |
|
|
|
dsFLAT |
KCategory |
|
Для компонента taFLAT последним устанавливается значение свойства Active=True.
Для кнопки “Выход” установим значение свойства Default=True, чтобы она реагировала на нажатие клавиши Enter, а для кнопки “Отмена” — значение свойства Cancel=True, чтобы она реагировала на нажатие клавиши Esc.
Компонент dcKCategory позволяет задавать значение поля (атрибута) KCategory нажатием на клавиатуре клавиш со стрелками или выбором одного из допустимых значений, предусмотренных в списке, который появляется при нажатии на кнопку со стрелкой. Список допустимых значений определяется свойством Items этого компонента. Для создания или проверки списка нужно дважды щелкнуть на свойстве Items, чтобы появилось окно String List Editor, в котором набираются строки, содержащие допустимые значения поля KCategory:
П
Н
К
Форма fmEDITFLAT будет использоваться как в режиме ввода, так и в режиме редактирования. Для задания режима необходимо предусмотреть признак Editing типа Boolean, объявив его в разделе publicкласса TfmEDITFLAT : Editing=True, если форма используется в режиме редактирования; Editing=False, если форма используется в режиме ввода. Этот признак должен устанавливаться перед активацией формы.
Вывод полей записи в режиме редактирования можно обеспечить, зная значение первичного ключа этой записи. Для таблицы taFLAT таким ключом служит поле Adr. Перед активизацией формы в режиме редактирования значение первичного ключа нужной записи необходимо сохранить в признаке KeyValue типа String, который следует объявить в разделе publicкласса TfmEDITFLAT. Тип признака KeyValue соответствует типу ключевого поля Adr.
При активизации формы происходит событие OnActivate, процедура обработки которого должна анализировать признак Editing и настраивать форму на заданный режим работы. Текст этой процедуры приведен на листинге 2.
Листинг 2. Процедура обработки события OnActivate
procedure TfmEDITFLAT.FormActivate(Sender: TObject);
begin
if Editing then
begin
Caption := 'Изменение сведений о квартире';
naFLAT.Enabled:=True; {Навигатор доступен}
with taFLAT do
begin
DisableControls;
First;
SetKey;
FieldByName('Adr').AsString := KeyValue;
GotoKey; {Поиск записи по ключу}
EnableControls;
Edit; {Режим редактирования}
end;
end
else
begin
Caption := 'Регистрация сведений о квартире';
naFLAT.Enabled:=False; {Навигатор не доступен}
taFLAT.Append; {Режим дополнения}
end;
end;
Для кнопок “Выход” и “Отмена” следует задать процедуры обработки события OnClick. Переход в окно текстового редактора для ввода текста процедур осуществляется двойным щелчком на кнопке “Выход” или “Отмена”. Текст процедур показан на листинге 3.
Листинг 3. Процедуры обработки событий OnClick для кнопок
Выход и Отмена
procedure TfmEDITFLAT.buExitClick(Sender: TObject);
begin
with taFLAT do
begin
if (State in [dsEdit,dsInsert]) and Modified then
Post; {Сохранить изменения, если действует режим}
end; {редактирования или дополнения и запись изменялась}
KeyValue := {Запомнить значение ключа для fmSHOWFLAT}
taFLAT.FieldByName('Adr').AsString;
fmEDITFLAT.Close;
end;
procedure TfmEDITFLAT.buCancelClick(Sender: TObject);
begin
taFLAT.Cancel; {Отменить изменения}
fmEDITFLAT.Close;
end;
На этом создание формы fmEDITFLAT завершается. Остается связать ее с пунктом меню “Квартиры” в главной форме и кнопкой на панели быстрого доступа.
Сохраним сделанные в проекте изменения командой File|Save Project, задав имя EDITFLAT для файла с модулем формы fmEDITFLAT, и перейдем в окно главной формы.
Для связи формы fmEDITFLAT с главной формой нужно щелкнуть на пункте меню “Квартира” и в окне текстового редактора набрать два оператора, показанные на листинге 4, а предложение uses ABOUTSYS дополнить именем модуля EDITFLAT.
Листинг 4. Процедура вывода формы fmEDITFLAT в режиме ввода
procedure TfmMAINFORM.mmEditFlatClick(Sender: TObject);
begin
fmEDITFLAT.Editing:=False;{Задать режим ввода}
fmEDITFLAT.ShowModal; {Активизировать форму}
end;
Эти же операторы должны выполняться при нажатии кнопки sbNewFlat, поэтому в качестве процедуры обработки события OnClick для этой кнопки зададим процедуру mmEditFlatClick, приведенную на листинге 4. Для этого нужно в главной форме щелкнуть на строке события OnClick, щелчком на кнопке со стрелкой вызвать список имен процедур обработки событий и выбрать имя mmEditFlatClick.
Сохранив изменения командой File|Save Project, можно проверить работоспособность проекта, осуществив активизацию созданной формы из меню или кнопкой на панели быстрого доступа и убедившись в правильном функционировании формы fmEDITFLAT.
Аналогичным способом создаются две другие формы типа “ввод/редактирование”: fmEDITPHON и fmEDITPROF.