U8开发之工具栏控件.docx
《U8开发之工具栏控件.docx》由会员分享,可在线阅读,更多相关《U8开发之工具栏控件.docx(38页珍藏版)》请在冰豆网上搜索。
U8开发之工具栏控件
U8工具栏控件
摘要
工具栏(Toolbar)是U8应用程序常用的界面元素。
把菜单中常用的命令做成按钮安排在工具条中,配上适当的图标符号和文本提示,能够极大地方便用户。
U8产品开发尤其是前台UI开发中,工具栏控件和窗体一样是系统展现不可缺少的一部分。
在早期U8产品开发过程中大量使用了微软的MSToolbar,但是随着U8ERP产品开发的精细化、专业化,微软的MSToolbar在界面设计和程序开发中暴露出了诸如界面图标配置不灵活、不支持多级菜单、不适应复杂应用场景、对多语的支持不够完善等开发问题。
为了弥补这些不足,并且兼容之前的产品,U8平台提供了工具栏控件。
在V11版本中,又对工具栏在UE效果上做了进一步改良,采用Ribbon工具栏风格,形成了现在U8产品的工具栏效果。
什么是工具栏?
Ribbon风格:
Ribbon是一种以皮肤及标签页为架构的用户界面(UserInterface),原先出现在MicrosoftOffice2007及2010的Word、Excel和Powerpoint等组件中,后来也被运用到Windows7的一些附加组件等其它软件中,如画图和写字板,以及Windows8中的资源管理器。
它是一个收藏了命令按钮和图标的皮肤。
它把命令组织成一组"标签",每一组包含了相关的命令。
每一个应用程序都有一个不同的标签组,展示了程序所提供的功能。
在每个标签里,各种的相关的选项被组在一起。
设计Ribbon的目的是为了使应用程序的功能更加易于发现和使用,减少了点击鼠标的次数。
门户Toolbar:
从门户树形菜单或全景式菜单打开的选项卡式窗体〔即嵌入门户的窗体〕中包含的工具栏称为门户Toolbar。
如下列图所示:
图门户Toolbar示意图
由于门户工具栏是U8各产品较常见且核心的内容,所以有必要介绍门户工具栏内部的一些概念,包括排版组、分组、按钮样式等。
以下分别介绍:
按钮分组:
在门户Toolbar上,两个分割线之间的区域即为一个按钮分组。
图按钮分组示意图
排版组:
每个纵向排列的按钮集合即为一个排版组,排版组形式可能表现为一个大按钮、或者两个小按钮、三个小按钮。
如下列图:
〔一个大按钮〕
〔两个小按钮〕
〔三个小按钮〕
按钮样式主要表现为普通按钮、下拉菜单〔带设置默认功能〕、下拉菜单〔不带设置默认功能、Toggle按钮、Combobox类型按钮。
〔Toggle按钮〕
〔普通按钮〕
〔下拉菜单〔不带设置默认功能〕〕
〔下拉菜单〔带设置默认功能〕〕
〔显示模板信息的按钮为Combobox类型按钮〕
由于单据是U8产品常见且核心的功能,所以单据上除了有门户Toolbar以外,也包含自己的Toolbar,方便用户能够快速定位功能。
单据的Toolbar包括表头Toolbar和表体Toolbar。
表头Toolbar:
表头工具栏并不是一个完整的工具栏,表头工具栏只是包含刷新、翻页〔首页、前页、后页、末页〕、高级等按钮。
其他的是单据表头的一部分,是单据控件的内部功能。
如下列图所示:
图表头Toolbar示意图
表体Toolbar:
表体工具栏是指单据表体顶部的工具栏,主要是针对表体的一些便捷操作的功能集合,方便用户浏览、操作表体数据时进行本单据的个性化操作。
如下列图所示:
图表体Toolbar示意图
模态窗体Toolbar:
非嵌入门户的窗体上的Toolbar工具栏。
这种窗体上的按钮样式相对门户Toolbar要少,没有Combobox类型、没有排版组和大小按钮的概念。
U890、U810.0、U810.1版本的按钮样式和U811.0模态窗体Toolbar的按钮样式相同。
图模态窗体Toolbar
目标
本文主要介绍工具栏控件的基础知识,应用过程及相关注意事项,方便各类U8产品开发人员更好的使用工具栏控件,更高效的开发产品。
工具栏可以做什么?
工具栏是U8应用程序开发中必不可少的组件,工具栏支持多语、支持键盘快捷键、支持多级菜单的展示和运用、支持设置图标和文字、集成MSToolbar方便业务组快速开发同时保持程序的向后兼容性。
1.V10.1及之前版本工具栏特性
由于V11.0版本只是在界面UE效果和工具栏构建方式上做了修改,其他内容均和之前版本相似,所以这里不做重点的讲解,这些版本的样式和ssss相同。
使用方式将在[如何使用工具栏组件]中介绍。
2.V11特性
a)支持流式布局
Ø没有权限的按钮不显示,相同排版组内其余按钮自动重新排版。
排版组可以定义小按钮最大行数。
当出现空白列时,后面的按钮自动向前平移。
Ø一个排版组内按钮因授权问题导致只有一个小按钮时自动升级为大按钮。
Ø相关系统没有启用而导致的不可用功能按钮不显示,如工作流没有启用,提交按钮不显示。
Ø有权限但当前单据状态或者操作状态下不可用按钮置灰。
b)支持多行显示
图多行显示示意图
Ø工具栏高度为三行横向排版小按钮高度。
Ø大按钮图标和标签采用上下排版,按钮占整个工具栏可用高度〔三行小按钮〕。
Ø小按钮图标和标签左右排版,当一列有三个小按钮时工具栏可用高度三等分、纵向中对齐,当一列有两个小按钮时工具栏可用高度二等分、纵向中对齐,当一列只有一个小按钮时工具栏可用高度二等分,纵向中对齐,按钮放在第一行。
Ø当相邻有多个小按钮时,可以把它们划分为一个或者多个排版组,每个排版组可以指定排版行数。
c)支持分组
Ø按钮支持按分组排列、排版组信息
d)多按钮样式
Ø普通小按钮、下拉菜单小按钮、有默认功能的下拉菜单小按钮
Ø普通大按钮、下拉菜单大按钮、有默认功能的下拉菜单大按钮
3.数据字典
a)V11.0数据字典
窗体按钮基本表〔AA_FormButtons_base〕(UFMeta库)
字段名
字段类型
说明
ctoolbarPosIndex
nvarchar(5)
标识窗体上该按钮所处位置信息.P(门户Toolbar),T(表头Toolbar),B(表体Toolbar) ,其中T、B只对单据窗体有用。
FunctionKey
nvarchar(100)
该按钮的功能Key
cAuthid
Nvarchar(255)
无用字段,方便抽取,不要赋值
cSetGroup
Nvarchar(120)
排版组名称
ProcessObjectName
Nvarchar(400)
组件名信息〔系统内部公共组件名,外部无需预置,无意义〕
iToolBarStyle
tinyint
按钮类型。
0代表普通按钮,1代表Check,2代表ButtonGroup,3代表分隔符,4代表PlaceHolder,5代表普通DropDown,55代表Combobox,56代表DropDown,57代表ToggleButton,128代表下拉但是不需要设置默认
cSubID
Nvarchar(50)
子产品ID
cResID
Nvarchar(100)
资源号
iOrder
int
位置信息〔决定按钮在排版组的位置〕
cTipResID
Nvarchar(100)
提示信息多语资源号
cForegroundColor
Nvarchar(120)
前景色
cGroup
Nvarchar(60)
分组信息(cGroup=Hidden则代表该组按钮隐藏不显示)
cButtonKey
Nvarchar(40)
按钮Key
cProjectNO
Nvarchar(50)
项目号
cHotKey
Nvarchar(200)
热键
cToolBarType
Nvarchar(20)
暂不使用
iVoucherCtlIndex
Tinyint
针对单据才有用,单据窗体上该按钮对应的单据控件ID
cFormCode
Nvarchar(40)
窗体的唯一标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
cBackgroundColor
Nvarchar(120)
背景色
iSetGroupRow
Int
排版组:
3/2/1。
3代表一组里面有3个按钮,2代表一组有两个按钮,1代表一组里面有一个按钮
cPic
Nvarchar(60)
图片名〔无路径、无后缀名〕
iheightRow
Int
行高。
3代表大按钮,1代表小按钮
窗体按钮多语资源表〔AA_FormButtons_lang〕(UFMeta库)
字段名
字段类型
说明
Autoid
Int
自增id,唯一标识
cCaption
Nvarchar(200)
按钮标题
cProjectNO
Nvarchar(50)
项目号
cFormCode
Nvarchar(40)
窗体标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
Localeid
Nvarchar(10)
语种信息
cSubID
Nvarchar(50)
子产品iD
cToolTip
Nvarchar(600)
按钮的Tip信息
cButtonKey
Nvarchar(40)
按钮Key
窗体按钮子菜单信息表〔AA_FormButtonMenus_base〕(UFMeta库)
字段名
字段类型
说明
cParentKey
Nvarchar(40)
按钮的上级菜单或菜单Key
cButtonKey
Nvarchar(40)
菜单对应按钮Key
FunctionKey
Nvarchar(100)
公共按钮执行的公共组件函数key,和ProcessObjectName配合使用
cFormCode
Nvarchar(40)
所在窗体的唯一标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
iMenuType
Int
菜单类型:
1代表CheckBox类型,0代表普通类型
cMenuKey
Nvarchar(40)
菜单Key
cSubID
Nvarchar(50)
子产品ID
cForegroundColor
Nvarchar(120)
前景色
cProjectNO
Nvarchar(50)
项目号
cAuthid
Nvarchar(255)
无用,仅为抽取工具抽取信息使用
cBackgroundColor
Nvarchar(120)
背景色
Igrade
Int
暂时无用
iOrder
Int
代表按钮下菜单的位置先后顺序
ProcessObjectName
Nvarchar(400)
公共处理组件名,仅为系统内部使用,和FunctionKey配合使用
cResID
Nvarchar(100)
资源号信息〔多语资源表关联时使用〕
窗体按钮菜单对应多语资源表〔AA_FormButtonMenus_lang〕(UFMeta库)
字段名
字段类型
说明
Autoid
Int
自增id,唯一标识
cCaption
Nvarchar(200)
按钮标题
cProjectNO
Nvarchar(50)
项目号
cFormCode
Nvarchar(40)
窗体标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
Localeid
Nvarchar(10)
语种信息
cSubID
Nvarchar(50)
子产品iD
cToolTip
Nvarchar(600)
按钮的Tip信息
cButtonKey
Nvarchar(40)
按钮Key
cMenuKey
Nvarchar(40)
菜单Key
窗体按钮菜单设置默认功能表〔AA_FormButtonsMenus_Default〕(UFData库)
注意这个是Data库的数据,其他的表都是Meta库的,这个表不是要预置的,是门户设置默认功能保存数据所用的表
字段名
字段类型
说明
cDefaultMenuKey
Nvarchar(40)
按钮要执行的功能对应的MenuKey
iType
Smallint
执行类型
Ufts
Timestamp
时间戳
cValue
Nvarchar(100)
默认值
cUserID
Nvarchar(100)
设置默认值的用户ID
cFormCode
Nvarchar(200)
按钮所在窗体的唯一标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
cButtonKey
Nvarchar(40)
对应按钮的Key
窗体信息基本表〔AA_Forms_base〕(UFMeta库)
字段名
字段类型
说明
cMemo
Nvarchar(200)
窗体信息描述
Pubufts
Timestamp
时间戳
cProjectNO
Nvarchar(50)
项目号
iFormType
Tinyint
标识窗体时模态弹窗还是嵌入门户
cSubID
Nvarchar(10)
子产品ID
bSmallbutton
Tinyint
该窗体上是否是一排小按钮
cFormCode
Nvarchar(40)
按钮所在窗体的唯一标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
窗体信息多语资源表〔AA_Forms_lang〕(UFMeta库)
字段名
字段类型
说明
cSubID
Nvarchar(50)
子产品ID
cFormDesc
Nvarchar(200)
窗体信息描述
Localeid
Nvarchar(10)
语种
cProjectNO
Nvarchar(50)
项目号
cFormCaption
Nvarchar(200)
窗体标题信息
cFormCode
Nvarchar(40)
按钮所在窗体的唯一标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
窗体按钮、菜单权限信息表〔AA_FormButtonAuths〕(UFMeta库)
字段名
字段类型
说明
cSubID
Nvarchar(50)
子产品ID
cButtonKey
Nvarchar(40)
按钮Key
cAuthid
Nvarchar(255)
权限号
cProjectNO
Nvarchar(50)
项目号
cMenuKey
Nvarchar(40)
菜单Key
cFormCode
Nvarchar(40)
按钮所在窗体的唯一标识,建议按照如下格式预置:
子产品号+前缀+单据/列表+窗体描述+CardNumber,例如frms_(前缀)_Voucher〔单据〕_PU(子产品号)_88(cardNumber)
以保持唯一性为主,类似如下的命名:
PU_frms_Voucher_Test_88
PU_Frms_VoucherList_Test_88
b)二次开发数据字典
窗体二次开发按钮、菜单信息表〔AA_CustomerButton〕(UFMeta库)〔U890/U10.0/U10.1〕
字段名
字段类型
说明
bInneralCommand
Int
是否内部命令,是则为1,否则为0
cToolTip
Nvarchar(200)
按钮或菜单的提示信息
iOrder
Nvarchar(50)
按钮或菜单的位置信息
cLocaleID
Nvarchar(50)
多语类型(zh-CN/zh-TW/en-US)
cVisibleAsKey
Nvarchar(100)
设置显示状态和系统的哪个按钮键值一致
cButtonType
Nvarchar(50)
default:
一般按钮,menu:
菜单,system替换系统按钮的功能,执行自己的方法,dropdown:
下拉类型
cImage
Nvarchar(100)
图标的文件名〔不带扩展名〕
cSubID
Nvarchar(50)
子产品号
DependenceSubIdList
Nvarchar(200)
依赖子产品列表(SubID以逗号分隔的字符串)
cButtonKey
Nvarchar(50)
按钮Key
cCustomerObjectName
Nvarchar(100)
该按钮要执行的功能的组件名
cButtonID
Uniqueidentifier
按钮ID(唯一标识GUID)
cKeyBefore
Nvarchar(50)
如果cButtonType是default则此键值表示自定义按钮前的按钮Key,如果cButtonType是menu则表示菜单所在的按钮,如果cButtonType是system则表示需要替换的按钮key
cHotKey
Nvarchar(50)
热键信息
cFormKey
Nvarchar(50)
暂时无用,可以和cVoucherKey相同
cGroup
Nvarchar(50)
分组信息
cProjectNO
Nvarchar(50)
不允许使用U870项目号,客户化项目用U8CustDef
cEnableAsKey
Nvarchar(100)
设置Enable状态和系统的哪个按钮键值一致
cCaption
Nvarchar(100)
按钮或菜单的标题
cVoucherKey
Nvarchar(50)
单据的CardNum信息
cVariant
Nvarchar(400)
自定义内容,里面的值会传给自己设置的处理的组件
窗体二次开发按钮、菜单信息表〔AA_CustomerButton〕(UFMeta库)〔V11.0版本〕
字段名
字段类型
说明
bInneralCommand
Int
是否内部命令,是则为1,否则为0
cToolTip
Nvarchar(200)
按钮或菜单的提示信息
iOrder
Nvarchar(50)
按钮或菜单的位置信息
cLocaleID
Nvarchar(50)
多语类型(zh-CN/zh-TW/en-US)
cBackgroundColor
Nvarchar(120)
按钮或菜单的背景色
cVisibleAsKey
Nvarchar(100)
设置显示状态和系统的哪个按钮键值一致
cButtonType
Nvarchar(50)
default:
一般按钮,menu:
菜单,system替换系统按钮的功能,执行自己的方法,dropdown:
下拉类型
cImage
Nvarchar(100)
图标的文件名〔不带扩展名〕
cSubID
Nvarchar(50)
子产品号
DependenceSubIdList
Nvarchar(200)
依赖子产品列表(SubID以逗号分隔的字符串)
cButtonKey
Nvarchar(50)
按钮Key
iVoucherCtlIndex
Tinyint
仅对单据上的按钮或菜单才有效。
该按钮所在的单据控件的Key
cToolbarPosIndex
Nvarchar(5)
该按钮的位置信息,P代表门户Toolbar,T代表表头Toolbar,B代表表体Toolbar。
T/B仅对单据上的工具栏有效
cCustomerObjectName
Nvarchar(100)
该按钮要执行的功能的组件名
cButtonID
Uniqueidentifier
按钮ID(唯一标识GUID)
cKeyBefore
Nvarchar(50)
如果cButtonType是default则此键值表示自定义按钮前的按钮Key,如果cButtonType是menu则表示菜单所在的按钮,如果cButtonType是system则表示需要替换的按钮key
cHotKey
Nvarchar(50)
热键信息
cSetGroup
Nvarchar(120)
排版组信息
cFormKey
Nvarchar(50)
暂时无用,可以和cVoucherKey相同
cGroup
Nvarchar(50)
分组信息
cForegroundColor
Nvarchar(120)
按钮前景色
cProjectNO
Nvarchar(50)
不允许使用U870项目号,客户化项目用U8CustDef
cEnableAsKey
Nvarchar(100)
设置Enable状态和系统的哪个按钮键值一致
iheightRow
Tinyint
行高,3代表大按钮,1代表小按钮
iSetGroupRow
Int
排版组:
3/2/1。
3代表一组里面有3个按钮,2代表一组有两个按钮,1代表一组里面有一个按钮。
cCaption
Nvarchar(100)
按钮或菜单的标题
cVoucherKey
Nvarchar(50)
单据的CardNum信息
cVariant
Nvarchar(400)
自定义内容,里面的值会传给自己设置的处理的组件
如何使用工具栏控件?
1.老版本应用工具栏控件〔890/10.0/10.1〕
首先引用MSToolbar、UFToolbar组件
一定要注意,引用MSToolbar要引用