Oracle Forms 6或更高版本中是否有反射?
是否可以枚举标签或其他元素?
发布于 2011-10-16 20:17:41
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参考涵盖了所有的内置内容,因此这里没有必要重复它。Find out more。
https://stackoverflow.com/questions/7776508
复制相似问题