用代码控制ITEM属性
1、用代码控制ITEM的可用性。
1.1、SET_ITEM_PROPERTY和SET_ITEM_INSTANCE_PROPERTY:
如果是控制单行记录或者多行记录中的全部记录:SET_ITEM_PROPERTY
如果是控制多行记录中的单一行记录:SET_ITEM_INSTANCE_PROPERTY
1.2、理解它们的最好区别就是亲自动手写一例子。
例: ①控制数据块T_TEST(多条记录)的ITEM的某一条记录是否可更改。
SET_ITEM_INSTANCE_PROPERTY(?T_TEST.TID‘, CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
SET_ITEM_INSTANCE_PROPERTY('T_TEST.TID', CURRENT_RECORD,INSERT_ALLOWED,PROPERTY_FALSE);
Effect:
③ 控制数据块T_TEST(多条记录)的单个ITEM的全部记录是否可更改。
Effect:
③控制数据块某个ITEM只允许insert,不允许delete.
在when-new-form-instance中加入
--先将数据块设为不可删除
set_block_property('T_TEST ',delete_allowed,property_false);
--然后对ITEM设为不可update set_item_property(' T_TEST .TID',
update_allowed,property_false);
2、用代码控制ITEM的可见性
SET_ITEM_PROPERTY('CONTROL.ITEM1', ENABLED, PROPERTY_FALSE);
在when-new-record-instance控制BLOCK的可用状态
这个触发器很好用,例如:可以根据主块的某个项的值,来控制子块是否可操作。
Begin
If :blockname.test = ?Y‘ then
set_block_property('blockname',DELETE_ALLOWED,PROPERTY_FALSE);
set_block_property('blockname',INSERT_ALLOWED,PROPERTY_FALSE);
set_block_property('blockname',UPDATE_ALLOWED,PROPERTY_FALSE);
end if;
end;