Чтобы можно было корректно сохранить изменения данных либо не сохранять их, в форме нужно предусмотреть две кнопки «ОК» и «Отмена». По кнопке «ОК» будет осуществляться вызов процедуры, которая запишет все изменения в БД и закроет форму. По кнопке «Отмена» будет произведен выход из формы без сохранения обновлений.
Для начала требуется создать процедуру, которая будет сохранять данные формы. Для этого в окне Object Navigator нужно выбрать узел Программы и в меню выбрать Edit->Create. Теперь в окне «Нов. Программа» введем имя новой процедуры: «SAVE_FORM» (рис. 96).
Рисунок 96 - Создание процедуры «SAVE_FORM»
Код процедуры сохранения будет таким:
PROCEDURE SAVE_FORM IS BEGIN Post; -- отправка данных в БД Commit_Form; -- фиксация изменений END; |
Следующим шагом необходимо создать служебный блок данных, в котором будут располагаться кнопки «ОК» и «Отмена». Блок необходимо создать с выбором опции «Build a new data block manually» (рис. 97).
Рисунок 97 - Создание блока данных вручную
Новому блоку данных присвоим имя «TAIL» и в Палитре его свойств установим свойство «Database Data Block» в значение «NO», отметив тем самым, что данный блок не связан с БД. Для установки кнопок сделать активным объект «CANVAS4» блока «DOVER». Кнопки будут расположены на объекте «CANVAS4» внизу под блоком закладок. Теперь необходимо в окне «Layout Editor» на панели инструментов выбрать инструмент Button (кнопка) и разместить на форме 2 кнопки. Новые кнопки будут помещены, скорее всего, в блок данных «DOVER», поэтому в окне Object Navigator их нужно перетащить мышью в блок «TAIL» (рис. 98).
|
|
Рисунок 98 - Создание кнопок в блоке данных «TAIL»
В Палитре свойств (Property Palette) первой кнопки установим следующие свойства:
– Name: OK_BUTTON
– Label: OK
Для второй кнопки:
– Name: CANCEL_BUTTON
– Label: Отмена
Чтобы по нажатию кнопок выполнялись нужные действия, следует для каждой из кнопок создать триггер «WHEN-BUTTTON-PRESSED», который вызывается при нажатии кнопки.
Для кнопки «ОК» код триггера будет следующим:
Save_Form; Exit_Form(NO_VALIDATE); -- выход из формы |
Для кнопки «Отмена»:
Exit_Form(NO_VALIDATE); |