需求: 在很多系统里面要求对不同的状态采取不同的颜色给用户提示. 例如: 有一张工资单,当某个员工的工资超过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; ------------------------ compile and run the form.查询员工工资时,大于5000的员工信息被系统用红色背景指示. 题外思考: 1.朋友们想一想,为什么不用set_item_property build-in procedure呢? 2.:system variables都有哪些内容呢? 参考: form online help document and http://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变量的用法. 呵呵,大家很积极.希望能更多的人参与到一些比较实际的技术讨论中来,这也是我发这篇文章的用意.
|