Есть ли отражение в Oracle Forms 6 или более поздней версии?

#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. Рад, что я воздержался от публикации.