使用K3BOS自定义控件示例

上传人:feng****ing 文档编号:94289750 上传时间:2022-05-22 格式:DOC 页数:8 大小:686.50KB
收藏 版权申诉 举报 下载
使用K3BOS自定义控件示例_第1页
第1页 / 共8页
使用K3BOS自定义控件示例_第2页
第2页 / 共8页
使用K3BOS自定义控件示例_第3页
第3页 / 共8页
资源描述:

《使用K3BOS自定义控件示例》由会员分享,可在线阅读,更多相关《使用K3BOS自定义控件示例(8页珍藏版)》请在装配图网上搜索。

1、使用K3BOS(v12+)实现助手视图仅供内部开发研究交流K3BOS从V12起提供了自定义控件支持.下面我们开发一个控件,加入BOS单据中,实现的助手视图的功能.第一步,我们先开发出一个控件.1. 启动VB,利用BOS插件向导,创建一个插件,命名为K3TestDll.CBillPlugin.2. 添加一个控件工程,命名为K3TestCtrl.CtlHelper调整控件外观.我们将把这个控件添加到单据上,所以你想要在单据上展示什么,就可以在控件上添加什么我添加了一个文本框txtInfo,准备用于展示物料信息;添加一张图片,用于展示物料图片;此外还添加了一些按钮,用于调用其他附加的功能.修改控件的

2、UserControl_Resize()方法,以免大小改变时,控件界面发生混乱.3. 为了在控件中响应插件事件,获取单据信息,我们需要在控件中添加插件支持:3.1 引用k3classevents.dll,kfo10.dll,msado2.8库添加插件接口对象:3.2 PrivateWithEventsm_BillInterfaceAsK3ClassEvents.BillEvent添加一个公开接口,以便初始化插件接口对象:PublicFunctionInit(ByValobjAsObject)OnErrorResumeNextSetm_BillInterface=03.3 EndFunction

3、插件本身的初始化:PrivateWithEventsm_BillInterfaceAsK3ClassEvents.BillEventPublicSubShow(ByValobjAsObject)IfUCase$(TypeName(obj)=BILLEVENTThenSetm_BillInterface=objElseMsgBoxInterfacenotsupported!EndIfEndSub这样,当单据加载时,会初始化插件;而插件又将单据接口对象委托给控件,我们可以在控件中处理单据的种种事件,获取单据信息。4.5当单据加载自定义控件时,在插件事件中初始化控件:加载自定义控件时,触发After

4、LoadDynamicCtl事件PrivateSubm_Billlnterface_AfterLoadDynamicCtl(_ByValsKeyAsString,ByValobjDynamicCtlAsObject)sKey是单据上自定义控件的FKeyobjDynamicCtl指向控件实例IfsKey=FUserDefineCtlThenCallobjDynamicCtl.Init(m_BillInterface)EndIf调用控件初始化方法,将插件接口对象传递过去EndSub4.6最后,我们在控件中处理单据事件,实现自己的功能例如,当用户在单据体各行之间切换分录时,在助手视图上显示该物料的信

5、息:PrivateSubm_BillInterface_GotFocus(_ByValsKeyAsString,_ByValdctDataAsKFO.IDictionary,ByValcurDspValueAsVariant,_ByValColAsLong,ByValRowAsLong,_CancelAsBoolean)OnErrorGoTolabelerrWithtxtinfoIfdctDataIsNothingThenExitSubIfsKey=FBaseThen是物料.Text=物料:&dctData(FDSP)&vbCrLf_&当前行:&Row&vbCrLf_&库存:&Round(Ge

6、tStockQty()+Row*2,0)&vbCrLf_&最高价:&Round(GetHighestPrice()+Row*3,0)&vbCrLf_&最低价:&Round(GetLowestPrice()-Row*2,0)&vbCrLfEndIfEndWithExitSublabelerr:MsgBoxErr.Number&vbCrLf&Err.Description&vbCrLf&_GotFocus()EndSub在这里可以添加其他处理,比如可以在自己的控件中展示物料的图片,执行单据上查下推,执行Action,等等.这些是BOS框架内早已包含的功能.只要你对K/3和BOS及相关数据库足够熟悉

7、,就可以在这里实现任何其他功能.4.7编译插件和控件工程,生成.dll&.ocx,我的是K3TestDll.dll,K3TestCtrl.ocx.第二步我们把控件注册到单据中:打开K/3BOSIDE,新建单据在单据体中添加物料、计量单位、单价、数量、金额字段在单据头添加文本、制单人、日期字段在单据头添加通用控件下的“自定义控件”,在属性列表窗口中找到“注册”属性,浏览到K3TestCtrl.ocx,打开,在列表框中出现K3TestCtrl.CtlHelper,打上勾,确定。这个过程跟设置单据插件一样。厂仅显示被选中的节点控件描述控件完整路径控件许可I确定(Q)I取消)|卫心牛忤力t因基础资料2

8、00000026-业务单据厘性单据200000000单据200000001单据200000007单据200000015单据200000022单200000023单据200000025单据200000027I自定文FUserDefineCtl繁体中文标题自定義英文标题Custom标识FUserDefineCtl上90左6735咼度5430宽度岔90r可见性2047I注册1层_公共层厘性5.设置单据插件为K3TestDII.DII.6保存单据.测试单据.应该可以看到运行效果了从上例中我们看到,自定义控件功能强大,几乎只要你能想到的功能,都可以实现。我们给出了全部示例代码,自己动手编译、配置一下,相

9、信可以很快掌握自定义控件开发诀窍。注意,开发测试好控件后,需要把控件及其依赖文件打进安装包,安装到客户端并注册才能使用哦!仍存在的问题:隐藏”助手视图”及拖拉”助手视图”的宽度,这个实现在目前的框架下可能有点难度BOS内部有如下解决方法:a. 如果单据布局支持动态切换,并提供插件接口的话,隐藏助手后直接载入新的布局就可以了-或-修改K3ClassBill.Bill.UserControl_Resize(),使得所有字段的位置与大小,能适应指定矩形框的位置与大小,而不是适应整个窗口的大小.这样隐藏助手后,重设矩形框大小,再触发_Resize()就可以了.这样实现的视图不是内置的,也就是说,客户如果需要这个功能,需要自己对每个单据做开发可以考虑将插件做得更漂亮一些,更通用一些,加入到增值插件包,客户可以自行下载源代码,经简单设置调整之后就可以使用这样创建控件加入BOS单据,对客户来说不便于调试,只能使用记日志的方式来诊断问题,修改错误。这个问题很恼火。一定要动态地单步调试的话,需要借助VC,WinDbg这样native的调试器,但仍然不够方便。有任何疑问欢迎到BOS开发者网络(Jerry

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!