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

目录:

1、添加工具栏按钮

2、查询被添加工具栏按钮的业务单据的FMenuID和FID

3、添加工具栏按钮和业务单据的映射关系

4、工具栏按钮点击激发事件MainFunction

5、工具栏按钮点击激发事件DLL注册

6、测试结果

7、附转载源码

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

本例以销售订单为例,已实际测试可行!

1、添加工具栏按钮

  1. insert into t_MenuToolBar
  2. ( FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,
  3. FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
  4. FVisible,FEnable,FChecked,FShortCut,FCBList,
  5. FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,FIndex,
  6. FToolCaption,FToolCaption_CHT,FToolCaption_EN)
  7. values
  8. (99999,'NewMenuTest','测试按钮1','测试按钮','测试按钮',
  9. '','测试按钮','测试按钮','测试按钮',0,
  10. 1,1,0,0,'',
  11. '','',0,0,0,
  12. '测试按钮','测试按钮','测试按钮')

2、查询被添加工具栏按钮的业务单据的FMenuID和FID

  1. --查询被添加工具栏按钮的业务单据的FmenuIDFID,分别是10032
  2. select FID,FmenuID,* from iclisttemplate where Fname LIKE '%销售订单%'

3、添加工具栏按钮和业务单据的映射关系

  1. --t_BandToolMapping.FID 对应 iclisttemplate.FMenuID
  2. --t_BandToolMapping.FToolID 对应 t_MenuToolBar.FToolID
  3. --t_BandToolMapping.FComName 是按钮激发组件DLL中命名空间.类名
  4. insert into t_BandToolMapping
  5. (FID,FBandID,FToolID,FSubBandID,FIndex,
  6. FComName,FBeginGroup)
  7. values
  8. (100,48,99999,0,999,
  9. '|BOS_BillEvent_PlugIns.Class3',0)

4、工具栏按钮点击激发事件MainFunction

MainFunction(ByVal sKey As string,oList AsObject,Byref bCancel as Boolean)
sKey :     菜单的Key值,也就是菜单名
oList :     K3List控件
bCancel:是否取消后继操作标志

代码如下:

  1. Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
  2.  
  3. 'Set InBatch = New InBatch 显示窗体
  4. MsgBox ""
  5. Dim vectBill As KFO.Vector
  6.  
  7. --经实际测试K3Connection.AppConnection取不到变量。请使用SQLHelper去连接数据库,代码和使用方法在第一篇插件新手指导里
  8. Set OBJ = CreateObject("K3Connection.AppConnection") '老单据里的连接字串
  9. '菜单响应
  10. Select Case sKey
  11. Case "NewMenuTest" '和你在数据库里插入的FNAME一样
  12. '通过Set vectBill = oList.GetSelected 可以获取当前选中序时薄数据
  13.  
  14. '返回记录集方式
  15. 'Set rs = obj.Execute("select * from t_icitem")
  16.  
  17. '执行存储过程方式
  18. ' obj.Execute3 ("exec KY_PlanQty")
  19.  
  20. End Select
  21. End Function

5、工具栏按钮点击激发事件DLL注册

新建批处理文件:注册.bat

文本内容:regsvr32 "BOS_BillEvent_PlugIns.dll"

双击注册.bat,进行DLL注册

6、测试结果

7、附转载源码

  1. Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
  2. Dim vectBill As KFO.Vector
  3. Dim lmul As Long
  4. Dim rs As ADODB.Recordset
  5. Dim InBatch As Form
  6. Dim J
  7. Dim I
  8. Dim Dict As KFO.Dictionary
  9. Dim DictCheck As KFO.Dictionary
  10. Dim fiterid As Integer
  11. Dim fbillno As String
  12. Dim sqlUpdate As String
  13. Dim sqlSelect As String
  14. Dim strList As String
  15.  
  16. 'Set InBatch = New InBatch 显示窗体
  17. Set OBJ = CreateObject("K3Connection.AppConnection") '老单据里的连接字串
  18.  
  19. Select Case sKey1
  20. Case "PlanUpdate"
  21. 'Set vectBill = New KFO.Vector
  22. : Set vectBill = oList.GetSelData("FInterID")
  23. If vectBill.UBound > Then
  24. frmUpdate.Show
  25. If frmUpdate.dtUpdate = "白班" Then
  26. For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40025=白班
  27. Set DictCheck = vectBill(I)
  28. sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40025 where finterid = " & DictCheck.GetValue("FInterID"))
  29. OBJ.Execute3 (sqlUpdate))
  30. Next I
  31. SendKeys ("{F5}")
  32. MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
  33. End If
  34. If frmUpdate.dtUpdate = "夜班" Then
  35. For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40026=夜班
  36. Set DictCheck = vectBill(I)
  37. sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40026 where finterid = " & DictCheck.GetValue("FInterID")
  38. OBJ.Execute3 (sqlUpdate) `
  39. Next I
  40. SendKeys ("{F5}")
  41. MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
  42. End If
  43. End If
  44. Case "PlanUpdate2"
  45. Set vectBill = oList.GetSelData("FInterID")
  46. If vectBill.UBound > Then
  47. strList = ""
  48. For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40025=白班
  49. Set DictCheck = vectBill(I)
  50. strList = strList & DictCheck.GetValue("FInterID") & ","
  51. Next I
  52. strList = Left(strList, Len(Trim(strList)) - )
  53. sqlSelect = "select t2.FNumber,t2.FName,sum(t1.FQty) from ICMO t1 inner join t_icitem t2 on t1.FItemID=t2.FItemID where t1.FInterID in (" & strList & ") group by t2.FNumber,t2.FName"
  54. Set rs = OBJ.Execute(sqlSelect)
  55. End Function
  1. --在采购订单序时簿上添加工具栏按钮
  2. INSERT INTO t_BandToolMapping
  3. (FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup)
  4. VALUES
  5. (81,47,1001,0,1001,'&mnuFileUserAdd1',1)
  6. INSERT INTO t_MenuToolBar
  7. (FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
  8. FVisible,FEnable,FChecked,FShortCut,FShortChar,FCBList,FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,
  9. FIndex,FToolCaption,FToolCaption_CHT,FToolCaption_EN )
  10. VALUES
  11. (1001,'UserAdd1','自定义1','自定义1','自定义1',17,'由用户自定义的按钮','由用户自定义的按钮','由用户自定义的按钮',0,
  12. 1,1,0,0,'','','','',0,0,0,'自定义1','自定义1','自定义1')

九、K3 WISE 开发插件《工业单据老单序时薄插件工具栏按钮开发实例》的更多相关文章

  1. K3老单序时簿开发示例

    K3需要对老单进行二次开发,老单的二次开发比较麻烦,这里整理一下老单序时簿上添加按钮的二次开发示例. --以下SQL脚本--获取 MENU IDselect FID,FmenuID,FName fro ...

  2. 八、K3 WISE 开发插件《工业单据老单插件中获取登陆用户名》

    备注:如果是BOS新单,都有获取用户名的方法.在单据有m_BillInterface.K3Lib.User.UserId,在序时薄有m_ListInterface.K3Lib.User.UserID ...

  3. 四、K3 WISE 开发插件《工业单据老单插件开发新手指导》

    开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 =============================================== 目录 一 ...

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

    ===================================== 目录: 1.演示效果--[销售订单]传值给[自定义窗体] 2.演示效果--[自定义窗体]传值给[销售订单] 3.附源码 4. ...

  5. 二、K3 WISE 开发插件《 工业单据老单客户端插件事件、属性、方法》

    ===================== 目录: 1.插件事件说明如下 2.插件属性说明如下 3.插件方法说明如下 ===================== 1.插件事件说明如下:  序号 事   ...

  6. K3 新单到老单关联字段的添加

    新单到老单字段的添加分为两种: 一种为文本字段信息的关联,新单与老单字段的信息均为文本字段: 另一种为基础资料信息的关联,新单与老单均为基础资料字段信息.       K3 WISE 11.0中存储老 ...

  7. K3 WISE 开发插件《K3 WISE常用数据表整理》

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------ FStatu ...

  8. 一、K3 WISE 开发插件《K3 WISE常用数据表整理》

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------FStatus ...

  9. K3 Wise 常用表【转载】

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.--事务类型select * from ICClassType            where  FT ...

随机推荐

  1. CentOS 7 NAT软路由

    ☼ NAT 转发软路由 开启 NAT 转发之后,只要本机可以上网,不论是单网卡还是多网卡,局域网内的其他机器可以将默认网关设置为已开启 NAT 转发的服务器 IP ,即可实现上网. 信任所有连接,并且 ...

  2. Error-MVCr:找到了多个与 URL 匹配的控制器类型。如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况。

    ylbtech-Error-MVCr:找到了多个与 URL 匹配的控制器类型.如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况. 1.返回顶部 1. 找到了多个与 URL 匹配的 ...

  3. maven 解决jar冲突

    那句话怎么讲来着的... 引用 如果你爱他,就请让他用Maven,因为那里是天堂,如果你恨他,就请让他用Maven,因为那里是地狱. Maven对于新手来说是<步步惊心>,因为它包罗万象, ...

  4. WPF 实现阴影效果

    一.WPF最常见的一个阴影效果的类是DropShadowEffect.它有几种比较有用的属性比如:Color设置颜色Direction设置投影的方向ShadowDepth设置投影距纹理下方的距离Opa ...

  5. windows多线程--原子操作

    推荐参考博客:秒杀多线程第三篇 原子操作 Interlocked系列函数 原子操作 VS 非原子操作 原子操作就是不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切 ...

  6. Gitbook 命令行工具

    1.Gitbook 简介 1.1 Gitbook GitBook 是一个基于 Node.js 开发的命令行工具,使用它可以很方便的管理电子书,GitBook 是目前最流行的开源书籍写作方案. 使用 G ...

  7. ASP.NET CORE的H5上传

    做的CORE项目中用到H5上传,把以前的MVC代码复制过来得修改一下才能用在.NET CORE中

  8. Python3求解字符串滤值与百元买百鸡算法

    [本文出自天外归云的博客园] 第一题:给你一个字符串,打印出来前后没有空格,单词之间只有一个空格的字符串. 第二题:公鸡3元/只,母鸡4元/只,小鸡1元3只,给你money元一共多少种买法. 普通版解 ...

  9. Geany的"跳转到标记定义“功能如何使用

    Geany是个比较轻量级的代码编辑器,在一些不怎么需要编辑的代码上,我比较常用它来浏览代码.不过它的 跳转到标记定义(Go to tag definition) 功能有点奇怪,一开始死活不知道怎么用, ...

  10. DBNull与Null的区别

    Null是.net中无效的对象引用. DBNull是一个类.DBNull.Value是它唯一的实例.它指数据库中数据为空(<NULL>)时,在.net中的值. null表示一个对象的指向无 ...