九、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 ...
随机推荐
- 用PHP纯手工打造会动的多帧GIF图片验证码
效果演示: http://pcik.7di.net/pcik_reg 百度的效果演示: https://passport.baidu.com/cgi-bin/genimage?captchaservi ...
- [How To] TrueCrypt使用教學 - 重要資訊的加密保險箱(转)
我在2013年八月的時候寫了這篇關於TrueCrypt的使用教學,但從去年(2014)五月下旬開始,TrueCrypt的首頁出現了"Using TrueCrypt is not secure ...
- 解决javah生成c头文件时找不到android类库的问题
问题描述: cmd下面进入工程的bin/classes下面,执行 javah xxx.xxx.A 生成头文件, 一般来说都是可以成功执行的,但是如果xxx.xxx.A类里面引用了android类库里面 ...
- 【NIO】Java NIO之通道
一.前言 前面学习了缓冲区的相关知识点,接下来学习通道. 二.通道 2.1 层次结构图 对于通道的类层次结构如下图所示. 其中,Channel是所有类的父类,其定义了通道的基本操作.从 Channel ...
- C# 读写文件摘要
主要参考地址:https://www.cnblogs.com/chenyangsocool/p/7511161.html 首先下载微软提供的工具:DsoFile (微软官网下载传送门) 读写自定义摘 ...
- Rar安装包
@ECHO OFF If exist "%Temp%\~import.reg" ( Attrib -R -S -H "%Temp%\~import.reg" d ...
- 目标检测比赛---Google AI Open Images - Object Detection Track
https://www.kaggle.com/c/google-ai-open-images-object-detection-track#Evaluation Submissions are eva ...
- java协变逆变,PECS
public static void main(String[] args) { // Object <- Fruit <- Apple <- RedApple System.out ...
- idea git 使用
第一部 测试 本地git 是否已经成功安装 centos 7 发行版默认已经安装 第二部: 测试 github 连接是否成功,需要输入用户密码 第三部:创建git项目管理两种方式 1. 菜单 VC ...
- 【iCore1S 双核心板_ARM】例程五:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...