例如:有一張工資單,當某個員工的工資超過5000時,使用者需要系統能用紅色來指示員工的姓名和工資.
實現方法:
我們新做一張form,按常規建好block和item並建一個visual attributes v1(background 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;
-----總結如下:
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.
(哦,原來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
中的顏色自訂功能得出