当前位置:首页 > 技术心得 > 正文内容

金蝶 老单增加工具栏按钮(Raise Event)

xjtudll5年前 (2021-10-20)技术心得7990

Public Sub AddToolButton(name As String, Caption As String, Description As String, Optional imagefilename As String = '', Optional iOrder As Long = 47, Optional imageIndex As Long = 20)
On Error GoTo EHandler
Dim bu As Button
Set bu = GetToolButton(name)
If bu Is Nothing Then
If imagefilename <> '' Then
Dim img As ListImage
Set img = m_BillTransfer.BillForm.tlbTool.ImageList.ListImages.Add(, name, LoadPicture(imagefilename))
imageIndex = img.Index
End If
Set bu = m_BillTransfer.BillForm.tlbTool.Buttons.Add(iOrder, name, Caption, , imageIndex)
bu.Caption = Caption
bu.ToolTipText = Description
bu.Description = Caption
End If
Exit Sub
EHandler: MsgBox 'MyTransferFacade.AddToolButton错误:' + Err.Description, vbCritical, '金蝶提示' Err.Clear
End Sub​​
然后在LoadBillEnd事件的处理方法中调用此方法,就可以向工具栏添加一个按钮
不过响应按钮按下的事件则需要使用另一个事件:
事实上,在制作插件时,最好对插件对象做一个封装,然后在具体的插件中进行间接使用,而不是直接访问,因此上面的代码也应该放在封装对象中,以下的代码也是在封装对象中的
'在用户选单后,填充数据后发生'本事件来源于RetEvent事件,并由此事件引发'EventID='Bill_FillBillDataExt'
Public Event AfterSelBill(ByVal Para As KFO.IDictionary, ByRef Cancel As Boolean)Public Event BeforePressToolBtn(ByVal buttonCaption As String, Para As KFO.IDictionary, ByRef Cancel As Boolean)Public Event AfterPressToolBtn(ByVal buttonCaption As String, Para As KFO.IDictionary, ByRef Cancel As Boolean)
Private Sub m_BillTransfer_RetEvents(ByVal Para As KFO.IDictionary)On Error GoTo EHandler Dim Cancel As Boolean Cancel = False If Para.lookup('EventID') = True Then
Select Case Para('EventID')
Case 'Bill_FillBillDataExt' '单据选单后事件
Call OnAfterSelBill(Cancel)
RaiseEvent AfterSelBill(Para, Cancel)
m_BillTransfer.DoRefreshControl
Case 'frmBill_CheckData'
If Para('EventIDProp') = 0 Then
RaiseEvent BeforeCheckData(Para, Cancel)
Else
RaiseEvent AfterCheckData(Para, Cancel)
End If
Case 'Bill_ButtonClick'
If Para('EventIDProp') = 0 Then
RaiseEvent BeforePressToolBtn(Para('para')('Button'), Para, Cancel)
Else
RaiseEvent AfterPressToolBtn(Para('para')('Button'), Para, Cancel)
End If
End Select
If Cancel = True Then
Para('EventIDCancel') = Cancel
End If
Exit Sub
EHandler: MsgBox 'Err.Description, vbCritical, '金蝶提示' Err.Clear
End Sub
然后在自己的插件对象中使用你封装的对象
由于在封装对象中使用了事件,所以在插件中定义时应该是这样的:
Private WithEvents myTransfer As MyTransfferFacade
带上了WithEvents关键字
然后是响应代码
Private Sub myTransfer_AfterPressToolBtn(ByVal buttonCaption As String, Para As KFO.IDictionary, Cancel As Boolean)
If buttonCaption = '保存' Then
...you code
ElseIf buttonCaption = '配货' Then
...you code
End If
Exit Sub
End Sub
附:
可以在工业单据的工具栏上增加或处理菜单
'下面的SUB是增加菜单的代码
Private Sub m_BillTransfer_LoadBillEnd(ByVal ShowType As Long)
With m_BillTransfer.BillForm.tlbTool.Buttons
.Add .Count, 'mnuTest', '测试', , 24
End With
m_BillTransfer.BillForm.tlbTool.Buttons('PRINT').Enabled = False
m_BillTransfer.BillForm.tlbTool.Buttons('PRINTVIEW').Visible = False
End Sub
'下面的SUB是响应点击事件的代码
Private Sub m_BillTransfer_RetEvents(ByVal Para As KFO.IDictionary)
If Para('EventID') = 'Bill_ButtonClick' And Para('EventIDProp') = 1 Then
If Para('Para')('Button').Key = 'mnuTest' Then
MsgBox 'Hello,World!'
End If
End If
End Sub
---同时也找到点其他有用的东西。
之前在论坛上看到有人提问工具栏各按钮的内部名称,通过以下语句可控制工具栏的显示状态。
'使打印按钮不可用
m_BillTransfer.BillForm.tlbTool.Buttons('PRINT').Enabled = False
'使打印预览按钮不可见
m_BillTransfer.BillForm.tlbTool.Buttons('PRINTVIEW').Visible = False
以下为销售订单工具栏的内部名称
新增,NEW
复制,COPY
保存,SAVE
恢复,BillUndo
清空,UNDO
打印,PRINT
预览,PRINTVIEW
下达,CONVEY
审核,CHECK
钩稽,Hook
批录,FullStockID
红字,RedBill
蓝字,BlueBill
删除,DelEntry
添加,AddEntry
首张,MOVEFIRST
前张,MOVEPRIVOUS
后张,MOVENEXT
末张,MOVELAST
刷新,REFRESH
查看,LOOKUP
正排,ArrangeUp
SN号,mnuSNMgr
等级品,manuGradeItem
证照,manuCardWarn
倒排,ArrangeDown
替代,RepOper
分解,Schedule
退出,EXIT

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/620/

标签: 金蝶
分享给朋友:

“金蝶 老单增加工具栏按钮(Raise Event)” 的相关文章

Protel99SE原理图全局设置

Protel99SE原理图全局设置

一说到Protel99SE的全局设置,大家肯定会想到Global功能,这个功能在PCB里使用是很简单的,但是在原理图里的使用,相信很多人就不会操作了。 举个例子来说明吧,如果我想将全部电阻的封装由RC0603(实际上就是0603,自己换个名字而已)全部改成RC0805,那么该怎么操作呢? 先任意...

Android调用系统自带的文件管理器进行文件选择

参考资料: http://blog.csdn.net/zqchn/article/details/8770913 http://www.xuebuyuan.com/929105.html 调用系统自带的文件管理器来选择文件         pri...

模数转换器主要技术指标

分辨率(Resolution) 指数字量变化一个最小量时模拟信号的变化量, 定义为满刻度与2n的比值。分辨率又称精度,通常以数字信号的位数来表示。 转换速率(Conversion Rate) 指完成一次从模拟转换到数字的AD转换所需的时间的倒数。 积分型AD的转换时间是毫秒级属低速AD,逐次...

Android 修改preferences summary 文字的颜色

参考资料: http://stackoverflow.com/questions/4081946/android-preferences-summary-default-color 需求: preferences summary的文字颜色通常是跟随系统的,例如黑色或白色,现需要根据不同情况改变su...

OKI单片机——ML610Q4XX 捕获功能

OKI单片机——ML610Q4XX 捕获功能

捕获取得的值是正常的两倍。 配置步骤: 1.通过(P0CON1)设置引脚模式。 2.设置外部引脚中断控制寄存器EXICON1。 3.设置CAPCON寄存器的ECAP1位启动捕获通道1。 /***********************************************/ * @bri...

金蝶K3采购订单序时簿过滤条件的执行状态分别是什么意思?

【概述】 未完全到货:【数量】-【收料数量】>0的单据 未完全入库:【数量】-【入库数量】>0的单据 未完全开票:【数量】-【开票数量】>0的单据 未完全付款:【价税合计】-【付款关联金额】>0的单据 完全付款: 【价税合计】-【付款关联金额】=0的单据...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。