Oracle Forms 6 或更高版本中有反射吗?
是否可以枚举标签或其他元素?
最佳答案
Forms 是一种古老而古老的编程语言,它不支持完整的反射、Java 风格。然而,它确实有 GET 和 SET 函数的补充,使我们能够询问和操作表单的元数据。
因此,我们可以单步执行 block 中的项目并使用 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(如果合适)。
我们可以通过多种方式动态更改表单的外观和行为。表单生成器引用涵盖了所有内置功能,因此没有必要在这里重述。 Find out more 。
关于oracle - Oracle Forms 6 或更高版本中是否有反射(reflect)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7776508/