尽量使用APP_ITEM_PROPERTY.SET_PROPERTY和APP_ITEM_PROPERTY.SET_VISUAL_ATTRIBUTE代替SET_ITEM_PROPERTY;
set_item_property是form builder带的。app_item_property.SET_PROPERTY是oracle公司为ebs开发的包,底层还是调用set_item_property。
APP_ITEM_PROPERTY.SET_PROPERTY 用法
ALTERABLE
app_item_property.set_property(itemid, ALTERABLE,PROPERTY_ON);
等价于:
set_item_instance_property(itemid, CURRENT_RECORD,INSERT_ALLOWED, PROPERTY_ON);
set_item_instance_property(itemid, CURRENT_RECORD,UPDATEABLE, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
ALTERABLE_PLUS
app_item_property.set_property(itemid, ALTERABLE_PLUS,PROPERTY_ON);
等价于:
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
如果item是隐藏的无效。
ENTERABLE
app_item_property.set_property(itemid, ENTERABLE,PROPERTY_ON);
等价于:
set_item_instance_property(itemid, CURRENT_RECORD,INSERT_ALLOWED, PROPERTY_ON);
set_item_instance_property(itemid, CURRENT_RECORD,UPDATEABLE, PROPERTY_ON);
set_item_instance_property(itemid, CURRENT_RECORD,NAVIGABLE, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
set_item_property(itemid, NAVIGABLE, PROPERTY_ON);
如果item是隐藏的无效。
ENABLED
app_item_property.set_property(itemid, ENABLED,PROPERTY_ON);
例如:
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
set_item_property(itemid, NAVIGABLE, PROPERTY_ON);
如果是按钮 APP_ITEM_PROPERTY.SET_PROPERTY 等价于: set_item_property(itemid, ENABLED, PROPERTY_ON);
If the item is not a text item, list, or button, then the
APP_ITEM_PROPERTY.SET_PROPERTY call 等价于:
set_item_property(itemid, ENABLED, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
DISPLAYED
app_item_property.set_property(itemid, DISPLAYED,PROPERTY_ON);
等价于:
set_item_property(itemid, DISPLAYED, PROPERTY_ON);
如果项目不是一个显示项目设置:
set_item_property(itemid, ENABLED, PROPERTY_ON);
set_item_property(itemid, NAVIGABLE, PROPERTY_ON);
If the item is neither a display item nor a button then also set:
set_item_property(itemid, QUERYABLE, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
REQUIRED
app_item_property.set_property(itemid, REQUIRED,PROPERTY_ON);
等价于:
set_item_property(itemid, REQUIRED, PROPERTY_ON);
如果item是隐藏的无效。
set_item_instance_property,display_item两个子程序总结:
1.set_item_instance_property,display_item 两个内置子程序都可以用来设置项中某行的相关属性(同项中的其余行属性会保持原来的属性不变),如颜色。
only changes the instance of that item that belongs to the block’s current record.If you want to change all instances of an item in a multi-record block, use SET_ITEM_PROPERTY .
2.二者区别:
a. display_item 是较早版本中出现的 , 而set_item_instance_property 是较晚版本中才有的(6i 以后的应都有)。
b.display_item有一个特性,就是当通过其改变后的属性,会延伸到与其同步的项上.即与其同步的项也跟着变了.但 set_item_instance_property 已取消了此特性 .
DISPLAY_ITEM has the side-effect of also changing the appearance of any items that mirror the changed instance.
SET_ITEM_INSTANCE_PROPERTY does not change mirror items.
c.如硬是还要找个区别的话,就是调用时所需参数有所不同,一个需要提供记录号,一个不用。
其实根据这点可以猜测到 set_item_instance_property 比display_item 可能可以使用的地方要多要广 ! 至于到底哪些地方 set_item_instance_property可用而 display_item 不可用。
3.另提一下 set_item_property 这个内置子程序。通过这个内置子程序设置的是整个项(即某项的所有记录)的属性。另发现当利用此内置子程序改变颜色时,颜色值应是 r( 红) 、 g(绿 ) 、b( 蓝 )三原色的组合 , 而不是在属性面版里直接选择颜色 , 然后返回到颜色属性那栏里的值 ( 即使看起来也是 rgb组合 ) 。否则将发现设置不成功 ( 但不报错) 。如:红色为: R255G0B0 ( 而不是RED) 酸橙色为:R153G204B0 。具体要找某个颜色的 rgb组合代码可借助于 WORD 中的颜色自定义功能得出。
在Oracle 的FORM中对不同的状态采取不同的颜色显示
例如:有一张工资单 ,当某个员工的工资超过 5000时, 用户需要系统能用红色来指示员工的姓名和工资 .
实现方法:
我们新做一张 form,按常规建好block 和item并建一个 visual attributes v1(background color=red(背景颜色是红色)foreground color=red(字体颜色是红色)).在相应的 block level上新建一个 post-query trigger并编写代码如下:
–如果工资 (block.item1)大于5000
if :block.item1 > 5000 then
–指示出相应的员工姓名 (block.item2)
set_item_instance_property(‘block.item2’,To_Number(:SYSTEM.TRIGGER_RECORD),VISUAL_ATTRIBUTE,‘v1’);
–指示出相应的工资(block.item3)
set_item_instance_property(‘block.item3’,To_Number(:SYSTEM.TRIGGER_RECORD),VISUAL_ATTRIBUTE,‘v1’);
end if;




