当前位置: 首页 > 新闻资讯  > 开发教程

用友U8自定义按钮开发

2023/9/2 23:35:16 人评论

网上搜索《U8界面按钮二次开发手册》即可找到基础的资料,主要分为几个步骤:一、判断界面是否可进行二次开发 在一个界面上同时按住Ctrl+Shift并点击任何一个按钮,这样你所需要的信息将被Copy到写字板(附件中的写字板)上,(注意不是记事本notepad)。二、根…

网上搜索《U8界面按钮二次开发手册》即可找到基础的资料,主要分为几个步骤:

一、判断界面是否可进行二次开发

            在一个界面上同时按住Ctrl+Shift并点击任何一个按钮,这样你所需要的信息将被Copy到写字板(附件中的写字板)上,(注意不是记事本notepad)。

二、根据获取的信息添加SQL按钮资料

在Meta数据库,表AA_CustomerButton中,表说明如下:

字段名

说明

cButtonID

按钮ID,GUID

cButtonKey

按钮Key

cButtonType

default表示一般按钮,

menu表示菜单,

system表示替换系统按钮的功能,执行自己的方法。

cProjectNO

不允许使用U870项目号,客户化项目用U8CustDef

cFormKey

无用

cVoucherKey

单据的Key

cKeyBefore

如果cButtonType是default则此键表示自定义按钮前的按钮key

如果cButtonType是menu则表示菜单所在的按钮

如果cButtonType是system则表示需要替换的按钮key

iOrder

无用

cGroup

分组IEDIT,ICOMMON

cCustomerObjectName

组件名

cCaption

标题

cLocaleID

语种 zh-cn, zh-tw,en-us

cImage

图标的文件名

cHotKey

快捷键如Ctrl+A

bInneralCommand

是否内部命令,设置为1

cVariant

自定义内容,里面的值会传给处理的组件

cVisibleAsKey

设置显示状态与系统的那个按钮键值一致

cEnableAsKey

设置Enable状态与系统的那个按钮键值一致

插入代码示例:

--销售订单的数据预置脚本
--销售订单的保存按钮后面增加一个按钮的脚本
INSERT INTO [AA_CustomerButton]([cButtonID], [cButtonKey], [cButtonType], [cProjectNO], [cFormKey], [cVoucherKey], [cKeyBefore], [iOrder], [cGroup], [cCustomerObjectName], [cCaption], [cLocaleID], [cImage], [cToolTip], [cHotKey], [bInneralCommand], [cVariant], [cVisibleAsKey], [cEnableAsKey])
VALUES(newid(), 'btntest','default', 'U8CustDef', 
'17', '17','save', '0', 'IEDIT','U8Test.mytestclass','测试',
'zh-cn','','测试','Ctrl+N',1,'测试数据','save','save')
--注意:U8Test.mytestclass类需要注册,否则会报Activex不能创建对象。--直接替换销售订单的保存按钮按钮的脚本INSERT INTO [AA_CustomerButton]([cButtonID], [cButtonKey], [cButtonType], [cProjectNO], [cFormKey], [cVoucherKey], [cKeyBefore], [iOrder], [cGroup], [cCustomerObjectName], [cCaption], [cLocaleID], [cImage], [cToolTip], [cHotKey], [bInneralCommand], [cVariant], [cVisibleAsKey], [cEnableAsKey])
VALUES(newid(), 'btntest2','system', 'U8CustDef', 
'17', '17','save', '0', 'IEDIT','U8Test.mytestclass','测试',
'zh-cn','','测试','Ctrl+N',1,'测试数据','save','save')--注意:U8Test.mytestclass类需要注册,否则会报Activex不能创建对象。

三、编写代码并注册

        新建一个VB类,并写入以下方法即可。C#也可以编写,但不能转换接收到的对象,还是VB的方便。

‘执行按钮,objVoucher为单据或列表对象
‘VarentValue为在表中预置的cVariant的值。
Public Function RunCommand(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, _ByVal sKey As String, ByVal VarentValue As Variant, ByVal other As String)End Function‘初始化
Public Function Init(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, msbar As Object)End Function‘在执行系统按钮只前调用,Cancel后会不再执行系统方法。
Public Function BeforeRunSysCommand(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, _ByVal sKey As String, ByVal VarentValue As Variant, ByRef Cancel As Boolean, ByVal other As String)Cancel = False
End Function

四、取值说明

        objVoucher的数据获取

        表头数据:objVoucher.HeaderText("cPersonCode")       cPersonCode是后台表字段。

        表体数据:objVoucher.bodytext(i, "iSum")      

                                 i:表体的第几行,从1开始,iSum:表体的后台字段

        '获取表体当前行数据:
                objVoucher.bodytext(objVoucher.Row, "cinvcode")
        '获取指定行数据,指定第一行:
                objVoucher.bodytext(1, "cinvcode")


相关资讯

  • u8服务器修改数据源,用友U8服务器修改数据库端口

    用友U8服务器修改数据库端口 内容精选换一换tempdb是系统数据库,是一个全局资源,可供连接到 SQL Server 实例或 SQL 数据库的所有用户使用 。它是一个临时数据库,无法永久保存数据,作用是给实例中的各种请求处理中间数据,分为主数据文件(.mdf)、次要数据文件(.ndf)和…

    2023/9/2 23:37:06
  • 如何使用C#编写用友U8软件相关功能,适用于插件和二次开发

    这里先给出我已经实现的工具CSharpU8,这个小工具就是解决Interop生成和OCX引用问题的,不愿意看文章,可以直接去用结果https://github.com/zzlufida/CSharpU8https://gitee.com/zzlufida/CSharpU8我们知道,U8的大部分功能使用VB6语言开发。所以整个U8功能都是基于COM组…

    2023/9/2 23:33:17
  • U8快速获取u8单据的类型key值

    win10下 打开 写字板,直接搜索栏搜索写字板打开。登录u8,找到需要的单据,以基础档案存货为例,打开存货档案界面。按住键盘ctrl+shift,鼠标左键单据单据上的某个按钮,以新增按钮为例,单击它。打开刚才的写字板,ctrl+v 粘贴内容这个Key就是单据类型了。

    2022/2/25 13:19:02
  • U8二次开发老是刷出有本地ip登录Sqlserver数据库失败的日志

    在我电脑-计算机管理-事件查看器-windows日志-应用程序里 1秒中就刷很多条 用户sa登录某个数据库失败,客户端ip:192.。。。;我查看ip发现是本机的ip地址。也就是说有本地的应用程序在不停的尝试登录sqlserver,但是每次都登不进去,这样就导致了sqlserver这个服务占用很…

    2022/2/25 13:16:45

共有条评论 网友评论

验证码: 看不清楚?