Oracle формирует триггер после нажатия кнопки

Я создал текстовое поле и кнопку. Я хотел, чтобы после нажатия кнопки текстовое поле стало пустым, фокус должен вернуться к текстовому полю.

BEGIN       
   IF :blk.textbox IS NULL THEN
        msg_alert('Error message', 'E', FALSE);
   end if;    
END; 

Я уже пытался поместить приведенный выше код в триггер WHEN-BUTTON-PRESSED, но ничего не происходит.

2 ответа

Решение

Поместите свой код в триггер WHEN-VALIDATE-ITEM для элемента BLK.TEXTBOX.

BEGIN       
    IF :blk.textbox IS NULL THEN
        msg_alert('Error message', 'E', FALSE);

        --if msg_alert procedure has no RAISE FORM_TRIGGER_FAILURE, then uncomment next line
        -- RAISE FORM_TRIGGER_FAILURE;
   end if;    

END; 

Вы также можете установить для свойства MOUSE NAVIGATE значение ЛОЖЬ (или НЕТ) кнопки, чтобы фокус не переместился на эту кнопку после нажатия.

используйте GO_ITEM также для установки фокуса на текстовый элемент. образец,

GO_ITEM('blk.textbox');

Зачем изобретать велосипед? Установить текстовые элементы REQUIRED собственность на YES,

Прочитав комментарии, которые вы оставили для ответа @eifla001, я не уверен, какой у вас код. Примерно так работает на моих формах 10g (но должно работать на любой версии):

-- WHEN-BUTTON-PRESSED trigger 
if :blk.textbox is null then
   go_item('blk.textbox');
end if;

Если это не работает, проверьте свойства TEXTBOX. Это действительно текстовый (или отображаемый) элемент? Это включено? Есть ли SET_ITEM_PROPERTY звонки, которые делают его недоступным?

Потому что задача, которую вы собираетесь выполнить, действительно тривиальна, она должна работать именно так.

Другие вопросы по тегам