熟悉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主处理界面而无法实现从相关业务对象处理界面中回调数据,对于这些控件对象该如何同数据源进行绑定,以及在信息录入操作时如何实现对业务对象选择界面回取信息,不在本文中讨论。