金蝶K3工业老单中间层开发示例

二次开发实现的步骤:

第一步、新建组件工程(假设工程名为ReDevPro,,包含一个类名为clsReDev的类模块),引用k3BillTransfer 组件和其他你要使用的组件例如ADO–Microsoft ActiveX Data Objects 2.1 Library等。

第二步、在clsReDev类代码中声明

Private WithEvents m_BillTransfer As k3BillTransfer.Bill。

第三步、必须添加以下代码否则系统不能够传递事件到你的组件中

Public Sub Show(ByVal o As Object)

Set m_BillTransfer = o

End Sub

第四步、在m_BillTransfer的各事件中编写相应处理代码。例如

Private Sub m_BillTransfer_BillInitialize()

Set cn = New ADODB.Connection

cn.CursorLocation = adUseClient

cn.Open m_BillTransfer.Cnnstring

End Sub

二次开发实现的步骤—续:

第五步、编写完成以后编译你的工程

第六步、注册二次开发组件使单据调用时能触发

在表t_ThirdpartyComponent中增加二次开发组件记录,各字段

含义为

FTypeID:二次开发插件类型,0为客户端插件;2为中间层插件

FTypeDetailID:单据类型ID,客户端表示对应表ICTransactionType的

FID,中间层表示事件类型

FIndex:组件调用顺序,按FTypeDetailID排取一个值

FComponentName:客户端二次开发组件,如PrjDemo.clsDemo

FComponentSrv:中间层保存二次开发组件名称

FDescription:描述

举几个二次开发的例子

范例一

在菜单中添加一个菜单,并实现该功能

Private Sub m_BillTransfer _BillInitialize()

m_BillTransfer.AddUserMenuItem "ddd", "dddddd"

End Sub

Private Sub m_billtranty_UserMenuClick(ByVal Index As Long, ByVal Caption As String)

If Caption = "ddd" Then

”MsgBox "OK"此处可以实现该菜单的功能代码

End If

End Sub

范例二

改变单据头的Filter 属性值,在插件中看到已经改变,

为什么没有传到k3bills中去,用以下代码即可实现

Private Sub m_BillTransfer_BeforHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)Dim THeadCtl As VariantDim i As LongIf CtlIndex = 4 ThenTHeadCtl = m_BillTransfer.HeadCtlTHeadCtl(CtlIndex).Filter = Replace(THeadCtl(CtlInd

ex).Filter, 986=986”, “986<>986”)m_BillTransfer.HeadCtl = THeadCtl‘一定需要先定义

一个THeadCtl的变量, 最后把该变量赋给

m_BillTransfer.HeadCtl,才能使其真正生效End If

End Sub

范例三

在插件中改变辅助属性的值为什么不起作用,插件中对表体的赋值有的不能按照m_BillTransfer.SetGridText的形式修改,一定要调用m_BillTransfer.BillForm.SetBillDataInput方式才可以真正修改

Set tmpItemInfo = New KFO.DictionarytmpItemInfo("Name") = "黄色"’辅助属性名称tmpItemInfo("Number") = "YELLOW"’辅助属性代码tmpItemInfo("Value") = "2"’辅助属性内码m_BillTransfer.BillForm.SetBillDataInput tmpItemInfo,

"FAuxPropID", 1, 1Set tmpItemInfo = Nothing’SetBillDataInput 辅助属性包,字段名,单据体(0:单据头;1:单据体),行号

范例四

在插件中填界面字段的三值

Private Const OperNo = 22’FOperID的FCtlOrder

Private Sub SetOperID(ByVal Row As Long, ByRef dctResultAs KFO.Dictionary)

On Error GoTo HErr

Dim EntryCtl As Variant

EntryCtl = m_BillTransfer.EntryCtl

EntryCtl(OperNo).DInterID(Row) =

肯承认错误则错已改了一半

金蝶K3工业老单中间层开发示例

相关文章:

你感兴趣的文章:

标签云: