oracle - Oracle Forms 6 或更高版本中是否有反射(reflect)?

标签 oracle plsql oracleforms

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/

相关文章:

oracle - 如何开始学习 oracle 表格和报告?

java - 是否可以通过 Selenium 自动化 Oracle Forms?

database - 甲骨文表格 : only iterate through selected records

c# - 在 Oracle 中生成 .Net 报价

sql - 在 oracle 中通过提交批量更新

oracle - 表不存在则创建,创建后进入一行

SQL Server 日期时间到 Oracle

sql - 如何计算 PROCEDURE 中不重复设定值的行数

oracle - Oracle 触发器中的 RTTI

Oracle 查找基于函数的索引的依赖列