微信搜索公众号:SAP中文学习网交流平台      SAP技术千人群: SAP中文学习网技术群      SAP技术交流2群:SAP技术交流2群      SAP新人群:SAP中文学习网新人群     

SAP中文学习网

SAP Business One SDK 之Object Level Event

来源: 互联网TAG标签: SAP Business One 作者:SAP中文学习网 点击:

SAP Business One 9.0之前的版本中,用户写ItemEvent响应,需要在Application上注册ItemEvent并且将所有的控件的事件响应代码写在一个函数中,这样有几点缺点:

1. 造成ItemEvent响应函数中代码非常的长,包括所有Form,所有Item的所有事件响应,非常难以维护AddOn 代码

2. 每个事件响应的代码都需要用户先手动做Filter代码才能找出代码执行点,比如用户需要响应一个Form1上一个Button的ClickAfter事件,必须先做Filter代码:

如果响应事件多的话每个控件做一次也是非常麻烦的。

3. 不太符合用户的编程习惯。

 

所以在SAP Business One 9.0中,我们在UIAPI中新增了Object Level Event这个功能,实现了对于窗体和控件对象级别的所有事件的注册和事件响应函数的实现。

1. 通过设置Application.EventLevel属性来实现Object Level Event的开关

SAPbouiCOM.BoEventLevelType.elf_Both(原有的ItemEvent和新功能Object Level Event 同时有效)

SAPbouiCOM.BoEventLevelType.elf_GlobalEvent(只有ItemEvent有效,关闭和新功能Object Level Event)

如果不设置则默认为两个功能都有效。

2. 通过EventForm这个类来注册Form级别的Object Level Event

EventForm是跟FormType绑定的,一个FormType只需要定义一个EventForm实例就可以了。

以下就是EventForm可以注册的Form事件:

用户可以直接注册Form级别的任何事件。

以下是注册FormType = 134的Business Partner上的LoadAfter事件的示例代码

这样用户就可以直接在响应函数里写代码了。

 

3. 可以通过所有的控件类来注册Item级别的Object Level Event

目前UIAPI支持Object Level Event的控件为

StaticText, EditText, Button, CheckBox, OptionButton, ComboBox, Folder, Grid, GridColumn, Matrix, Column, PictureBox, LinkedButton, ButtonCombo。

 

示例通过Object Level Event来注册一个Button的ClickBefore和ClickAfter事件。

 

注意事项

在Add On中如果需要使用Object Level Event, EventForm和控件建议都定义为成员变量或者全局变量,因为如果是局部变量,该变量一旦被系统自动释放,所注册的事件就无效了。

目前SAP Business One 9.0最新功能SAP Business One Studio for Microsoft Visual Studio 中窗体和控件事件的注册都采用了Object Level Event的方法,用户可以使用该功能更方便的设计代码。

(编辑:cindy liu )
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
您有可能感兴趣的文章