十二、K3 WISE 开发插件《工业单据老单与自己添加的窗体 - 互相传值传参》

=====================================

目录:

1、演示效果--【销售订单】传值给【自定义窗体】

2、演示效果--【自定义窗体】传值给【销售订单】

3、附源码

4、另一种做法:定义public全局变量,进行传值

5、源码附件

=====================================

1、演示效果--【销售订单】传值给【自定义窗体】

新建销售订单菜单栏按钮插件--【弹窗交互】,点击【打开自定义弹窗】,打开Form1窗体,把业务单据类型名称传值给自定义窗体Form1。

 

在Form1窗体,点击“弹出消息框”,,并弹出消息:“来源单据:”+业务单据类型名称传值。

 

2、演示效果--【自定义窗体】传值给【销售订单】

 在Form1窗体的文本框输入“Hello World ! “,按回车键,调用回车事件,传值到【销售订单】的单据体第一行的”备注“字段。

 

按回车键后,值写入”备注“字段。

 

3、附源码

销售订单插件类Class1.cls:

 
'定义插件对象接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_BillTransfer   As k3BillTransfer.Bill
 
Public Sub Show(ByVal oBillTransfer As Object)
 
    '接口实现
    '注意: 此方法必须存在, 请勿修改
    Set m_BillTransfer = oBillTransfer
 
End Sub

Private Sub Class_Terminate()
 
    '释放接口对象
    '注意: 此方法必须存在, 请勿修改
    Set m_BillTransfer = Nothing

End Sub

Private Sub m_BillTransfer_BillInitialize()
 
    'TODO: 请在此处添加代码响应事件 BillInitialize
 
 
'*************** 开始设置菜单 ***************
 
    m_BillTransfer.AddUserMenuItem "打开自定义弹窗", "弹窗交互"
 
'*************** 结束设置菜单 ***************
 

End Sub

Private Sub m_BillTransfer_BillTerminate()
 
    'TODO: 请在此处添加代码响应事件 BillTerminate
 

End Sub

Private Sub m_BillTransfer_UserMenuClick(ByVal Index As Long, ByVal Caption As String)
 
    'TODO: 请在此处添加代码响应事件 UserMenuClick
 
 
    Select Case Caption
    Case "打开自定义弹窗"
        '此处添加处理 打开自定义弹窗 菜单对象的 Click 事件
        Dim Form As New Form1
        Set Form.frm_BillTransfer = m_BillTransfer
        '交互:这里从销售订单传值到自定义窗口
        Form.selSourceName = "销售订单"
        Form.Show 1
        Set Form = Nothing
    Case Else
    End Select

End Sub

 

窗体Form1代码:

Option Explicit
Public WithEvents frm_BillTransfer   As k3BillTransfer.Bill

Public selSourceName As String

Private Sub Command1_Click()
MsgBox "来源单据:" & selSourceName
End Sub


Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        '交互:自定义弹窗回传参数给销售订单
        SetInfo frm_BillTransfer, Text1.Text
        '关闭弹窗
        Unload Me
    End If
End Sub

 

公共类Module1.cls:

Public Sub SetInfo(m_BillTransfer As k3BillTransfer.Bill, Value As String)
With m_BillTransfer
.SetGridText 1, getColIndex(m_BillTransfer, "备注"), Value
End With
End Sub

Function getColIndex(m_BillTransfer As k3BillTransfer.Bill, colName As String) As Long
    On Error GoTo errCI
    Dim tmpIndex As Long
    tmpIndex = -1
    With m_BillTransfer
        Dim i As Integer
        For i = 1 To 200
            If .GetGridText(0, i) = colName Then
                tmpIndex = i
                Exit For
            End If
        Next i
    End With
    getColIndex = tmpIndex
    Exit Function
errCI:
    getColIndex = tmpIndex
End Function

 

4、另一种做法:定义public全局变量,进行传值

 

5、源码附件

 工业单据与插件自定义弹窗交互2017-11-13  下载

posted on 2017-11-13 10:34  林枫山  阅读(5758)  评论(1编辑  收藏  举报