ebs Form 表单个性化
一共包括4种类型
1.特性
用于改变FORM中各组件的属性,相当于set_block_property ,例如可以改变 画布隐藏与否,按钮是否可以点击,item是否可以更改等
2.消息
用于弹出提示消息,相当于 fnd_message.debug
3.内置
用于调用各类功能,并发程序等,包括表单
调用功能有一个需要注意的地方是 传递参数
参数有两种形式
1.给定的字符串。例如app_find.find('bolck'); 个性化之后,点击个性化的功能,一定会调用这个过程/方法
2.动态的参数。传参的方式为 =‘parameter1=’||:block.item1||'parameter2='||:block.item2 实际上就是 = string
4.菜单
用于在工具栏中添加功能,选择special/menu等,这样就可以在工具栏中调用相应的功能。添加完菜单功能后,需要另外定义一个个性化的功能来响应这个功能。
添加快捷键:
给个性化功能添加快捷键:只需要在 功能名后面 添加(&a) ,例如function(&a),快捷键为a
关于个性化开发需要特别注意的一个地方:
为什么有些时候添加的个性化代码不执行?
个性化代码作用的原理是在APP_STANDARD.EVENT 触发器里添加相应的代码。而这个触发器的位置是跟我们之前选择的触发器位置相关。(一般为when-new-form-instance)这时就会在 when-new-form-instance里添加APP_STANDARD.EVENT,进而调用这个触发器里面的代码,实现个性化的效果。我们添加的触发器全都属于FORM级。
因此,选择的触发器位置会影响个性化代码是否执行。相同的事件,例如WHEN-NEW-RECORD-INSTANCE,在form,block,item里都有,而优先级一般为item>block>form。如果我们选择的触发器位置为WHEN-NEW-RECORD-INSTANCE,item级的就会覆盖掉form级的,因此有可能导致我们的个性化代码不被执行。
同理,触发器条件 before/override/after也是影响个性化代码是否执行的因素。
对应的触发器的属性设定不一样的时候,测试的结果:
Item:Before/Block: Before /Form: Before
执行效果: Item-->Block-->Form
设为Before,执行顺序正常,从小到大。
Item:After/Block:Override/Form:Override
执行效果:Block-->Item-->Form级不执行
设为Override,则就是对应层次的触发器的断点。上一级的不会被执行。
Item:After/Block:Override/Form:After
执行效果:Block-->Item-->Form级不执行
Item:After/Block:Override/Form: Before
执行效果:Block-->Item-->Form级不执行
Item:After/Block: After/Form:After
执行效果:Form-->Block-->Item
设为After的话,执行的顺序会颠倒。
Item:After/Block: After/Form:Override
执行效果:Form-->Block-->Item
设为After的话,执行的顺序会颠倒。
Item:After/Block: Before/Form:Override
执行效果:Block -->Form-->Item