#oracle #plsql #oracleforms
#Oracle #plsql #oracleforms
Вопрос:
Есть ли отражение в Oracle Forms 6 или более поздней версии?
Можно ли перечислять метки или другие элементы?
Ответ №1:
Forms — это старый и почтенный язык программирования, и он не поддерживает полноценное отражение в стиле Java. Тем не менее, он имеет набор функций GET и SET, которые позволяют нам запрашивать метаданные формы и манипулировать ими.
Таким образом, мы можем переходить по элементам блока и получать их метки, используя GET_ITEM_PROPERTY следующим образом (пример, адаптированный из документации):
DECLARE
cur_itm VARCHAR2(80);
cur_block VARCHAR2(80) := :System.Cursor_Block;
cur_label VARCHAR2(120);
BEGIN
cur_itm := Get_Block_Property( cur_block, FIRST_ITEM );
WHILE ( cur_itm IS NOT NULL ) LOOP
cur_itm := cur_block||’.’||cur_itm;
cur_label := Get_Item_Property( cur_itm, LABEL);
-- do whatever you want with the label here
cur_itm := Get_Item_Property( cur_itm, NEXTITEM );
END LOOP;
END;
Вы можете изменить МЕТКУ текущего элемента, используя SET_ITEM_PROPERTY .
Примечание: LABEL — это свойство, которое применяется только к определенным элементам (кнопкам, флажкам и т. Д.), Поэтому вы можете включить тест для типа элемента и, возможно, вместо этого захватить PROMPT_TEXT, если это уместно.
Существует множество способов изменения внешнего вида и поведения формы «на лету». Справочник Form Builder охватывает все встроенные модули, поэтому нет смысла повторять его здесь. Узнайте больше.
Комментарии:
1. как всегда, отличный ответ, я не был уверен, означает ли термин отражение в этом контексте, что OP искал что-то вроде Forms JDAPI или его старшего брата по реализации C. Рад, что я воздержался от публикации.