用友U8自定义按钮开发

网上搜索《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")

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello World,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值