Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭКТ / БДлаб6-7.doc
Скачиваний:
21
Добавлен:
16.04.2013
Размер:
443.39 Кб
Скачать

Свойства компонентов, расположенных на форме 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

Table Name

DataSet

Data Source

DataField

Visible Buttons

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, объявив его в разделе public класса TfmEDITFLAT как Editing : Boolean. Editing=True, если форма используется в режиме редактирования; Editing=False, если форма используется в режиме ввода. Этот признак должен устанавливаться перед активацией формы.

Вывод полей записи в режиме редактирования можно обеспечить, зная значение первичного ключа этой записи. Для таблицы taFLAT таким ключом служит поле Adr. Перед активизацией формы в режиме редактирования значение первичного ключа нужной записи необходимо сохранить в признаке KeyValue, который следует объявить в разделе public класса TfmEDITFLAT как KeyValue : String. Тип признака 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.

Создание формы fmSHOWFLAT. Выберем команду File|New Form, чтобы включить в проект пустую форму.

Поместим в эту форму три компонента Button и по одному компоненту DBGrid и DBNavigator, расположив их так, как показано на рис.8. Поместим также на любое свободное место в форме компоненты Table и DataSource.

Зададим для формы значения свойств Name=fmSHOWFLAT, Caption=Сведения о квартирах. Значения свойств других компонентов установим в соответствии с табл.5 и 6.

Таблица 5

Соседние файлы в папке ЭКТ