Триггер, который вызывается при открытии формы – WHEN-NEW-FORM-INSTANCE. В нашей форме необходимо, чтобы при загрузке сразу выполнялись запросы в блоках данных, чтобы можно было видеть, какие данные уже внесены в таблицы.
Код триггера WHEN-NEW-FORM-INSTANCE:
:System.Message_Level:= '5'; Go_Block('DOVER'); Execute_Query; Go_Block('DOVER_SP'); Execute_Query; Go_Block('DOVER'); |
При закрытии окна формы выполянется триггер WHEN-WINDOW-CLOSED. Если в форме есть несохраненные данные, то нужно предложить пользователю их сохранить. Для этих целей необходимо использовать сообщение - Alert.
Чтобы создать Alert, необходимо в окне Object Navigator выделить узел Alerts и выбрать пункт меню Edit->Create.
Для нового сообщения Alert установим следующие свойства:
– Name: SAVE_ALERT
– Title: Сообщение
– Message: Вы хотите сохранить сделанные Вами изменения?
– Button 1 Label: Да
– Button 2 Label: Нет
– Button 3 Label: Отмена
– Default Alert Button: Button 3
Теперь создадим триггер формы с WHEN-WINDOW-CLOSED следующим кодом:
DECLARE but NUMBER; stat1 VARCHAR2(14); stat2 VARCHAR2(14); BEGIN Go_Block('DOVER'); stat1:=:System.Block_Status; Go_Block('DOVER_SP'); stat2:=:System.Block_Status; if stat1 <> 'QUERY' OR stat2 <> 'QUERY' THEN but:= Show_Alert('SAVE_ALERT'); if but = ALERT_BUTTON3 then -- Нажали "Отмена" return; end if; if but = ALERT_BUTTON1 then -- Нажали "Да" Save_Form; end if; end if; Exit_Form(NO_VALIDATE); END; |