九、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 ...
随机推荐
- 八幅漫画理解使用 JSON Web Token 设计单点登录系统
原文出处: John Wu 上次在<JSON Web Token – 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家 ...
- 递归与迭代的联系以及优缺点(以c++为例)
1.递归的定义: 程序直接或间接的调用自身的方法. 递归算法的特点:(1) 递归就是在过程或函数里调用自身.(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口.(3) 递归算法解题通 ...
- Python中结巴分词使用手记
手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...
- Spring MVC 中使用 Google kaptcha 验证码
验证码是抵抗批量操作和恶意登录最有效的方式之一. 验证码从产生到现在已经衍生出了很多分支.方式.google kaptcha 是一个非常实用的验证码生成类库. 通过灵活的配置生成各种样式的验证码,并将 ...
- android开发之打包签名
android开发之数字签名 http://www.cnblogs.com/fengzhblog/archive/2013/05/06/3063104.html Android系统要求所有的程序经过数 ...
- 【编码题篇】收集整理来自网络上的一些常见的 经典前端、H5面试题 Web前端开发面试题
编写一个方法 求一个字符串的字节长度假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var byt ...
- 转: 如何使用jstack分析线程状态
这个讲的好系列: 如何使用jstack分析线程状态 转:http://www.jianshu.com/p/6690f7e92f27 背景 记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于 ...
- 机器学习笔记十三:Ensemble思想(上)
从上面几篇的决策树開始,就能够開始进入到集成学习(ensemble learning)了,与其说集成学习是一种算法,倒不如说集成学习是一种思想. 集成学习的思想也是非常自然非常符合人类直观理解的. 用 ...
- [转]关于ios 推送功能的终极解决
刚刚做了一个使用推送功能的应用 遇到了一些问题整的很郁闷 搞了两天总算是弄明白了 特此分享给大家 本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看 首先要 ...
- 【读书笔记】Data_Mining_with_R---Chapter_2_Predicting Algae Blooms
本书概要 <Data Mining with R>这本书通过实例,并结合R讲解数据挖掘技术.本书的核心理念就是"Learning it by doing".本书分5章, ...