需求:
在很多系统里面要求对不同的状态采取不同的颜色给用户提示.
例如:有一张工资单,当某个员工的工资超过5000时,用户需要系统能用红色来指示员工的姓名和工资.
做法:
我们新做一张form,按常规建好block和item并建一个visualattributesv1(backgroundcolor=red).在相应的blocklevel上新建一个post-querytrigger并编写代码如下:
----------------------
...
--假如工资(block.item1)大于5000
ifblock.item15000then
--指示出相应的员工姓名(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');
endif;
------------------------
compileandruntheform.查询员工工资时,大于5000的员工信息被系统用红色背景指示.
题外思考:1.朋友们想一想,为什么不用set_item_propertybuild-inprocedure呢?
2.:systemvariables都有哪些内容呢?
参考:formonlinehelpdocumentandhttp://www.tek-tips.com
set_item_property会整行变成红色,而不是工资超出5000元的员工变红色。
其它系统变量,可以在forms的help里,输入system就可以查出。
set_item_property:假如是表格的话不能实现你说的功能。
SYSTEM.BLOCK_STATUS
SYSTEM.COORDINATION_OperaTION
SYSTEM.CURRENT_BLOCK
SYSTEM.CURRENT_DATETIME
SYSTEM.CURRENT_FORM
SYSTEM.CURRENT_ITEM
SYSTEM.CURRENT_VALUE
SYSTEM.CURSOR_BLOCK
SYSTEM.CURSOR_ITEM
SYSTEM.CURSOR_RECORD
SYSTEM.CURSOR_VALUE
SYSTEM.DATE_THRESHOLD*
SYSTEM.EFFECTIVE_DATE*
SYSTEM.EVENT_WINDOW
SYSTEM.FORM_STATUS
SYSTEM.LAST_QUERY
SYSTEM.LAST_RECORD
SYSTEM.MASTER_BLOCK
SYSTEM.MESSAGE_LEVEL*
SYSTEM.MODE
SYSTEM.MOUSE_BUTTON_PRESSED
SYSTEM.MOUSE_BUTTON_SHIFT_STATE
SYSTEM.MOUSE_ITEM
SYSTEM.MOUSE_CANVAS
SYSTEM.MOUSE_X_POS
SYSTEM.MOUSE_Y_POS
SYSTEM.MOUSE_RECORD
SYSTEM.MOUSE_RECORD_OFFSET
SYSTEM.RECORD_STATUS
SYSTEM.SUPPRESS_WORKING*
SYSTEM.TAB_NEW_PAGE
SYSTEM.TAB_PREVIOUS_PAGE
SYSTEM.TRIGGER_BLOCK
SYSTEM.TRIGGER_ITEM
SYSTEM.TRIGGER_RECORD
FW:没错,set_item_property只能使整行变红.
通过这个例子,能学到关于set_item_property与set_item_instance_property的区别以及SYSTEM变量的用法.
呵呵,大家很积极.希望能更多的人参与到一些比较实际的技术讨论中来,这也是我发这篇文章的用意.