九、K3 WISE 开发插件《工业单据老单序时薄插件工具栏按钮开发实例》
===============================
目录:
1、添加工具栏按钮
2、查询被添加工具栏按钮的业务单据的FMenuID和FID
3、添加工具栏按钮和业务单据的映射关系
4、工具栏按钮点击激发事件MainFunction
5、工具栏按钮点击激发事件DLL注册
6、测试结果
7、附转载源码
===============================
本例以销售订单为例,已实际测试可行!
1、添加工具栏按钮
- insert into t_MenuToolBar
- ( FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,
- FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
- FVisible,FEnable,FChecked,FShortCut,FCBList,
- FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,FIndex,
- FToolCaption,FToolCaption_CHT,FToolCaption_EN)
- values
- (99999,'NewMenuTest','测试按钮1','测试按钮','测试按钮',
- '','测试按钮','测试按钮','测试按钮',0,
- 1,1,0,0,'',
- '','',0,0,0,
- '测试按钮','测试按钮','测试按钮')
2、查询被添加工具栏按钮的业务单据的FMenuID和FID
- --查询被添加工具栏按钮的业务单据的FmenuID和FID,分别是100,32
- select FID,FmenuID,* from iclisttemplate where Fname LIKE '%销售订单%'
3、添加工具栏按钮和业务单据的映射关系
- --t_BandToolMapping.FID 对应 iclisttemplate.FMenuID,
- --t_BandToolMapping.FToolID 对应 t_MenuToolBar.FToolID
- --t_BandToolMapping.FComName 是按钮激发组件DLL中命名空间.类名
- insert into t_BandToolMapping
- (FID,FBandID,FToolID,FSubBandID,FIndex,
- FComName,FBeginGroup)
- values
- (100,48,99999,0,999,
- '|BOS_BillEvent_PlugIns.Class3',0)
4、工具栏按钮点击激发事件MainFunction
MainFunction(ByVal sKey As string,oList AsObject,Byref bCancel as Boolean)
sKey : 菜单的Key值,也就是菜单名
oList : K3List控件
bCancel:是否取消后继操作标志
代码如下:
- Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
- 'Set InBatch = New InBatch 显示窗体
- MsgBox ""
- Dim vectBill As KFO.Vector
- --经实际测试K3Connection.AppConnection取不到变量。请使用SQLHelper去连接数据库,代码和使用方法在第一篇插件新手指导里
- Set OBJ = CreateObject("K3Connection.AppConnection") '老单据里的连接字串
- '菜单响应
- Select Case sKey
- Case "NewMenuTest" '和你在数据库里插入的FNAME一样
- '通过Set vectBill = oList.GetSelected 可以获取当前选中序时薄数据
- '返回记录集方式
- 'Set rs = obj.Execute("select * from t_icitem")
- '执行存储过程方式
- ' obj.Execute3 ("exec KY_PlanQty")
- End Select
- End Function
5、工具栏按钮点击激发事件DLL注册
新建批处理文件:注册.bat
文本内容:regsvr32 "BOS_BillEvent_PlugIns.dll"
双击注册.bat,进行DLL注册
6、测试结果
7、附转载源码
- Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
- Dim vectBill As KFO.Vector
- Dim lmul As Long
- Dim rs As ADODB.Recordset
- Dim InBatch As Form
- Dim J
- Dim I
- Dim Dict As KFO.Dictionary
- Dim DictCheck As KFO.Dictionary
- Dim fiterid As Integer
- Dim fbillno As String
- Dim sqlUpdate As String
- Dim sqlSelect As String
- Dim strList As String
- 'Set InBatch = New InBatch 显示窗体
- Set OBJ = CreateObject("K3Connection.AppConnection") '老单据里的连接字串
- Select Case sKey1
- Case "PlanUpdate"
- 'Set vectBill = New KFO.Vector
- : Set vectBill = oList.GetSelData("FInterID")
- If vectBill.UBound > Then
- frmUpdate.Show
- If frmUpdate.dtUpdate = "白班" Then
- For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40025=白班
- Set DictCheck = vectBill(I)
- sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40025 where finterid = " & DictCheck.GetValue("FInterID"))
- OBJ.Execute3 (sqlUpdate))
- Next I
- SendKeys ("{F5}")
- MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
- End If
- If frmUpdate.dtUpdate = "夜班" Then
- For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40026=夜班
- Set DictCheck = vectBill(I)
- sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40026 where finterid = " & DictCheck.GetValue("FInterID")
- OBJ.Execute3 (sqlUpdate) `
- Next I
- SendKeys ("{F5}")
- MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
- End If
- End If
- Case "PlanUpdate2"
- Set vectBill = oList.GetSelData("FInterID")
- If vectBill.UBound > Then
- strList = ""
- For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40025=白班
- Set DictCheck = vectBill(I)
- strList = strList & DictCheck.GetValue("FInterID") & ","
- Next I
- strList = Left(strList, Len(Trim(strList)) - )
- 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"
- Set rs = OBJ.Execute(sqlSelect)
- End Function
- --在采购订单序时簿上添加工具栏按钮
- INSERT INTO t_BandToolMapping
- (FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup)
- VALUES
- (81,47,1001,0,1001,'&mnuFileUserAdd1',1)
- INSERT INTO t_MenuToolBar
- (FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
- FVisible,FEnable,FChecked,FShortCut,FShortChar,FCBList,FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,
- FIndex,FToolCaption,FToolCaption_CHT,FToolCaption_EN )
- VALUES
- (1001,'UserAdd1','自定义1','自定义1','自定义1',17,'由用户自定义的按钮','由用户自定义的按钮','由用户自定义的按钮',0,
- 1,1,0,0,'','','','',0,0,0,'自定义1','自定义1','自定义1')
九、K3 WISE 开发插件《工业单据老单序时薄插件工具栏按钮开发实例》的更多相关文章
- K3老单序时簿开发示例
K3需要对老单进行二次开发,老单的二次开发比较麻烦,这里整理一下老单序时簿上添加按钮的二次开发示例. --以下SQL脚本--获取 MENU IDselect FID,FmenuID,FName fro ...
- 八、K3 WISE 开发插件《工业单据老单插件中获取登陆用户名》
备注:如果是BOS新单,都有获取用户名的方法.在单据有m_BillInterface.K3Lib.User.UserId,在序时薄有m_ListInterface.K3Lib.User.UserID ...
- 四、K3 WISE 开发插件《工业单据老单插件开发新手指导》
开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 =============================================== 目录 一 ...
- 十二、K3 WISE 开发插件《工业单据老单与自己添加的窗体 - 互相传值传参》
===================================== 目录: 1.演示效果--[销售订单]传值给[自定义窗体] 2.演示效果--[自定义窗体]传值给[销售订单] 3.附源码 4. ...
- 二、K3 WISE 开发插件《 工业单据老单客户端插件事件、属性、方法》
===================== 目录: 1.插件事件说明如下 2.插件属性说明如下 3.插件方法说明如下 ===================== 1.插件事件说明如下: 序号 事 ...
- K3 新单到老单关联字段的添加
新单到老单字段的添加分为两种: 一种为文本字段信息的关联,新单与老单字段的信息均为文本字段: 另一种为基础资料信息的关联,新单与老单均为基础资料字段信息. K3 WISE 11.0中存储老 ...
- K3 WISE 开发插件《K3 WISE常用数据表整理》
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------ FStatu ...
- 一、K3 WISE 开发插件《K3 WISE常用数据表整理》
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------FStatus ...
- K3 Wise 常用表【转载】
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.--事务类型select * from ICClassType where FT ...
随机推荐
- CentOS 7 NAT软路由
☼ NAT 转发软路由 开启 NAT 转发之后,只要本机可以上网,不论是单网卡还是多网卡,局域网内的其他机器可以将默认网关设置为已开启 NAT 转发的服务器 IP ,即可实现上网. 信任所有连接,并且 ...
- Error-MVCr:找到了多个与 URL 匹配的控制器类型。如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况。
ylbtech-Error-MVCr:找到了多个与 URL 匹配的控制器类型.如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况. 1.返回顶部 1. 找到了多个与 URL 匹配的 ...
- maven 解决jar冲突
那句话怎么讲来着的... 引用 如果你爱他,就请让他用Maven,因为那里是天堂,如果你恨他,就请让他用Maven,因为那里是地狱. Maven对于新手来说是<步步惊心>,因为它包罗万象, ...
- WPF 实现阴影效果
一.WPF最常见的一个阴影效果的类是DropShadowEffect.它有几种比较有用的属性比如:Color设置颜色Direction设置投影的方向ShadowDepth设置投影距纹理下方的距离Opa ...
- windows多线程--原子操作
推荐参考博客:秒杀多线程第三篇 原子操作 Interlocked系列函数 原子操作 VS 非原子操作 原子操作就是不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切 ...
- Gitbook 命令行工具
1.Gitbook 简介 1.1 Gitbook GitBook 是一个基于 Node.js 开发的命令行工具,使用它可以很方便的管理电子书,GitBook 是目前最流行的开源书籍写作方案. 使用 G ...
- ASP.NET CORE的H5上传
做的CORE项目中用到H5上传,把以前的MVC代码复制过来得修改一下才能用在.NET CORE中
- Python3求解字符串滤值与百元买百鸡算法
[本文出自天外归云的博客园] 第一题:给你一个字符串,打印出来前后没有空格,单词之间只有一个空格的字符串. 第二题:公鸡3元/只,母鸡4元/只,小鸡1元3只,给你money元一共多少种买法. 普通版解 ...
- Geany的"跳转到标记定义“功能如何使用
Geany是个比较轻量级的代码编辑器,在一些不怎么需要编辑的代码上,我比较常用它来浏览代码.不过它的 跳转到标记定义(Go to tag definition) 功能有点奇怪,一开始死活不知道怎么用, ...
- DBNull与Null的区别
Null是.net中无效的对象引用. DBNull是一个类.DBNull.Value是它唯一的实例.它指数据库中数据为空(<NULL>)时,在.net中的值. null表示一个对象的指向无 ...