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

原文地址:https://www.cnblogs.com/shuihaya/p/13908683.html