九、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 ...
随机推荐
- Android:ImageView控件
ImageView 是用于在界面上展示图片的一个控件,通过它可以让我们的程序界面变得更加 丰富多彩.学习这个控件需要提前准备好一些图片,由于目前 drawable 文件夹下已经有一张 ic_launc ...
- ScrollView不能包含多个子项,ScrollView can host only one direct child
http://debuglog.iteye.com/blog/1441828 ScrollView不能包含多个子项,ScrollView can host only one direct child ...
- java 线程池 使用实例
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...
- Asp.net 子域共享cookie
最近项目遇到要共享cookie的问题,本来后台保存session用的是Redis来保存数据的.所以只需要2个站点发的ASP.NET_SessionId是相同的就可以,并且它的Domain 是父级域名. ...
- Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换
一.问题描述 在上次博文中,我们使用RadioGroup+ViewPage+Fragmen实现了顶部滑动导航(查看文章:http://www.cnblogs.com/jerehedu/p/460759 ...
- WPF应用程序exe接收参数
using System;using System.ServiceProcess; namespace GoShopService{ public partial class Service1 ...
- ios实例开发精品源码文章推荐(8.22)
1.iOS源码:简单阅读器 http://www.apkbus.com/android-112176-1-1.html 2.iOS源码:音频声效--Audio Streamer<ignore_j ...
- 设计模式C++实现——工厂模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.设计模式中运用了面向对象编程语言的重要特性:封装.继承.多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累.最 ...
- Python 贝叶斯分类
很久的时间没有更新了,一是因为每天加班到比较晚的时间,另外,公司不能上网,回家后就又懒得整理,最近在看机器学习实战的书籍,因此才又决定重新拾起原先的博客! 今天讲的是第三章的贝叶斯分类方法,我们从一个 ...
- 11g新特性-SQL Plan Management
在11g之前版本,提供了stored outlines(sql概要)特性来保存sql的执行计划. 在11g中,引入了一个新的特性sql计划管理(sql plan management)特性来保存sql ...