熟悉Sbo操作的人都知道,在Sbo中,不管是Sbo系统程序,还是自定义的业务报表,只要业务对象的主键显示在屏幕上,往往这个字段只要存在当前值,在它的前面都有一个黄色的右向箭头,点击这个箭头,就可以关联到这个主键关联的业务对象主操作界面上。
Sbo称呼这个黄色的右向箭头为关联按钮(linkButton),在Sbo UI SDK API中,专门有一种控件类型就是linkButton,就是SAPbouiCOM.LinkedButton。那么在Sbo Add-on开发中,到底如何实现linkButton同实际的业务对象的关联呢--点击这个linkButton,就可以关联到这个主键关联的业务对象主操作界面上?
如前所述,linkButton需要同一个编辑或者显示控件对象的当前值关联,还要同相关的业务对象关联。而支持编辑或者显示的控件对象分为两类:单控件对象,如下拉列表控件SAPbouiCOM.ComboBox、文本编辑控件SAPbouiCOM.EditText等;表格控件对象,主要包括Matrix和Grid。在Sbo中,上述两种控件对象都可能同业务对象实现基于linkButton的关联,只不过,表格控件对象的业务关联往往需要Matrix或者Grid的一列关联到指定的业务对象。
在Sbo UI开发中,上述的两种控件只是在绑定数据源的时候有所区别,单控件对象或者表格控件的列对象同linkButton的绑定的过程都差不多。
1、单控件对象
- 声明单控件对象和linkButton对象
- Dim oCombo As SAPbouiCOM.ComboBox
- Dim oLinked As SAPbouiCOM.LinkedButton
- 新增一个下拉列表框
- oItem = oForm.Items.Add("ItemLink", SAPbouiCOM.BoFormItemTypes.it_COMBO_BOX)
- oItem.Left = 100
- oItem.Top = 110
- oItem.AffectsFormMode = False
- oItem.LinkTo = "Linked"
- 新增一个连接按钮,位于上述的下拉列表的前面位置
- oItem = oForm.Items.Add("Linked", SAPbouiCOM.BoFormItemTypes.it_LINKED_BUTTON)
- oItem.Left = 80
- oItem.Top = 110
- oItem.LinkTo = "ItemLink"
- 绑定编辑/显示对象到业务对象:物料主数据,并将关联到物料主数据主操作界面
- oLinked = oItem.Specific
- oLinked.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Items
2、表格空间的列对象
- 声明一个Matrix控件和一个Matrix空间列对象,以及一个linkButton对象
- Dim oMatrix As SAPbouiCOM.Matrix
- Dim Column As SAPbouiCOM.Column
- Dim oLinked As SAPbouiCOM.LinkedButton
- 添加一个Matrix控件
- oItem = oForm.Items.Add("PCMatrix", SAPbouiCOM.BoFormItemTypes.it_MATRIX)
- oItem.Left = 30
- oItem.Width = 360
- oItem.Top = 150
- oItem.Height = 400
- oMatrix = oItem.Specific
- 为Matrix添加一个列对象
- oColumns = oMatrix.Columns
- oColumn = oColumns.Add("ItemCode", SAPbouiCOM.BoFormItemTypes.it_EDIT)
- oColumn.TitleObject.Caption = "物料编码"
- oColumn.Width = 30
- oColumn.Editable = True
- 绑定列对象到业务对象:物料主数据,并将列链接到物料主数据系统界面
- oLink = oColumn.ExtendedObject
- oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Items
上述代码实现了控件对象当前值同相关业务的关联--关联到业务对象的Sbo主处理界面而无法实现从相关业务对象处理界面中回调数据,对于这些控件对象该如何同数据源进行绑定,以及在信息录入操作时如何实现对业务对象选择界面回取信息,不在本文中讨论。
本文转自foresun 51CTO博客,原文链接:http://blog.51cto.com/foresun/44054,如需转载请自行联系原作者