【发布时间】:2011-12-08 06:09:59
【问题描述】:
Oracle Forms 6 或更高版本中是否有反射?
是否可以枚举标签或其他元素?
【问题讨论】:
标签: oracle plsql oracleforms
Oracle Forms 6 或更高版本中是否有反射?
是否可以枚举标签或其他元素?
【问题讨论】:
标签: oracle plsql oracleforms
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。
注意:LABEL 是一个仅适用于某些项目(按钮、复选框等)的属性,因此您可能需要对项目类型进行测试,并在适当的情况下获取 PROMPT_TEXT。
我们可以通过多种方式即时更改表单的外观和行为。 Form Builder Reference 涵盖了所有的内置函数,所以这里没有必要重述它。 Find out more。
【讨论】: