【问题标题】:IS there reflection in Oracle Forms 6 or later?Oracle Forms 6 或更高版本中是否有反映?
【发布时间】:2011-12-08 06:09:59
【问题描述】:

Oracle Forms 6 或更高版本中是否有反射?

是否可以枚举标签或其他元素?

【问题讨论】:

    标签: oracle plsql oracleforms


    【解决方案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。

    注意:LABEL 是一个仅适用于某些项目(按钮、复选框等)的属性,因此您可能需要对项目类型进行测试,并在适当的情况下获取 PROMPT_TEXT。

    我们可以通过多种方式即时更改表单的外观和行为。 Form Builder Reference 涵盖了所有的内置函数,所以这里没有必要重述它。 Find out more

    【讨论】:

    • 一如既往地是一个很好的答案,我不确定在这种情况下术语反射是否意味着 OP 正在寻找类似 Forms JDAPI 之类的东西,或者它的 C 实现哥哥。很高兴我没有发帖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多