Office中国论坛/Access中国论坛

标题: 自定义功能区三板斧(二):鬼剔牙 [打印本页]

作者: roych    时间: 2015-12-22 13:27
标题: 自定义功能区三板斧(二):鬼剔牙
本帖最后由 roych 于 2015-12-29 09:11 编辑

剔牙,当然是一个精细活儿了。鬼剔牙,那更是鬼斧神工,从细节上来“剔牙”了。所以,这一招对应的是分析代码,从根本上为大家解惑。

现在,就让我们一步步理解上一节贴出的代码吧。
XML是一种以树结构进行组织数据的,而且相对严格的语言,对大小写敏感。依次展开节点,得到一个这样的结构:
customUI> ribbon> tabs>tab> group

一般来说,树结构数据是除了根节点之外,其它树节点都是可以有兄弟节点(即存在并列结构)的。而这段代码中,我们却只能修改的是tab节点以及其子节点、孙节点,增加ribbon或tabs节点,则会导致无法正常工作(即保持原有设置,而无法自定义功能区)。

不过这很容易理解:我们可以根据需要选择不同的功能区(这将在后面解释),但每次只能使用一个功能区来显示。因此,如果存在多个ribbon的节点,意味着什么呢?一个文件可以同时显示多个功能区,这显然不符合逻辑了。tabs更不用说,一个tabs集合只能被一个功能区所包含了。

也就是说,我们可以通过增加不同的tab选项卡,然后再对每个选项卡分成多个组别,最后在每个组别上增加控件(即上文所述的孙节点)来完成操作。
接下来,我们简单解释下XML代码里的一些属性【里面所有属性值必须加上双引号】:
  
名称
  
说明
注释
customUI
自定义功能区顶级元素
需要指定xmlns属性
ribbon
定义功能区
忽略startFromScratch属性,或者指定为false表示在默认功能区上创建自定义功能区,否则表示新建空白功能区。
tabs
选项卡集合

tab
选项卡

group
选项卡下的组别

button
按钮,隶属于组
通过指定onAction属性值来执行宏或回调函数。
dropdown
下拉列表,隶属于组

combobox
组合框,隶属于组

id
属性,元素唯一标识符
对于自定义功能区,Tab及其子孙节点须以id属性值来标志,命名规则:以英文字符开头且不能包含特殊字符。
idMso
属性,标准控件标识符
类似于id属性,所有属性值为内置的固有名称。
label
属性,控件标签文本
用于显示控件。非内置功能区应指定属性值。
size
属性,控件大小
属性值为:Normal(默认值)或者large
imageMso
属性,控件图标
属性值为Access内置图标对应的指定名称
supertip
属性,提示文本

enabled
属性,是否可用
值为truefalse,可用于用户权限分配或者条件执行程序
visible
属性,是否可见
值为truefalse,大多用于用户权限分配。

注意:XML是一种相对严格的语言,对大小写敏感,因此使用上述表中的名称时请不要改动。

了解这些属性之后,我们再回头看看这段代码【出于篇幅,这里不列出全部代码】。
  1. <ribbon startFromScratch="false">表示在原有的功能区上创建自定义功能区(其实这里是对原有的功能区进行修改)
  2. <tab idMso="TabHomeAccess" visible="false">----表示隐藏“开始”选项卡
  3. <tab idMso="TabExternalData" visible="true">
  4. <group idMso="GroupExport" visible="false">----隐藏“外部数据”中的“导出”组。
复制代码
很显然,默认情况下,原有功能区都是可见的。下面,就让我们来验证下,是不是这样:
点击选项/当前数据库/功能区和工具栏,在下拉菜单中选择“test”。
[attach]57600[/attach]
然后按提示关闭当前数据库,再打开一次。“开始”选项卡以及“导出”组果然不见了。
现在问题来了:如果把startFromScratch的属性改为true,会发生什么情况呢?(请先自行思考,答案回复可见)
这时候,可能有人会问了:“TabHomeAccess”,“TabExternalData”之类的属性值是怎么找到的?Roych当然记不住那么多名称了,所以在这里就提供一个好办法给大家:
还记得上一个帖子么?不记得的翻一下,看看第一张图,“确定”的左上方是不是有一个“导入/导出”……我相信,聪明的版友应该知道怎么做了。
导出的文件是以exportedUI为扩展名的文件,请用记事本打开试试看?这些代码是不是跟我们之前的XML代码很像?
————————2015-12-29增加测试附件
[attach]57755[/attach]
               上一篇      下一篇




作者: leonshi    时间: 2015-12-22 14:33
厉害
作者: yanwei82123300    时间: 2015-12-22 15:15
谢谢分享!!
作者: XMX64311    时间: 2015-12-22 15:50
谢谢分享
作者: 764300778    时间: 2015-12-22 20:36
eeee
作者: 天涯沦落20131    时间: 2015-12-23 14:17
111111
作者: 天涯沦落20131    时间: 2015-12-23 16:55
我刚用access2007做了测试不知是我理解不够还是方法不对!功能未实现!
作者: xiaowuo2    时间: 2015-12-23 17:14
对07与2010等版本,那个界面看了实在头痛,明明有很强的学习冲动,但经常做了一半后,因为界面的繁锁又扔一边不学了,唉,现在继续用着03版的
作者: roych    时间: 2015-12-23 17:26
天涯沦落20131 发表于 2015-12-23 16:55
我刚用access2007做了测试不知是我理解不够还是方法不对!功能未实现!

2007可以用的。可能CustomUI那一行的链接改为再试试:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
具体可以在“选项/自定义功能区/导入导出”里面导出功能区看看里面的设置。
作者: purplerose    时间: 2015-12-23 21:13
ROYCH 历害呀,没有想到除了技术过硬 ,文彩也不在话下呀, 值得学习一下!
作者: 老鬼    时间: 2015-12-28 15:51
好久没来学习了
作者: 轻风    时间: 2015-12-29 08:45
鬼剔牙
作者: wenbin_zheng    时间: 2016-1-5 11:18
厉害
作者: gxstudent    时间: 2016-4-5 16:53
学习!
作者: 522650696    时间: 2016-4-14 15:57
太厉害了。。。
作者: yedaoan    时间: 2016-5-2 10:22
好东西,应该多看看
作者: 飘过    时间: 2016-8-31 16:31
看看
作者: 无锡大山    时间: 2016-11-17 15:54
好的
作者: access新新新手    时间: 2017-7-19 08:52
谢谢分享
作者: xuwenning    时间: 2017-7-20 10:18
学习了
作者: qtx    时间: 2017-7-23 00:01
不错啊,了解了解!
作者: huanghai    时间: 2018-4-4 14:18
学习了
作者: huanghai    时间: 2018-4-4 14:18
学习了鬼剔牙
作者: huanghai    时间: 2018-4-4 14:18
学习了,鬼剔牙。
作者: ttkxssry    时间: 2019-6-13 16:44
想看看结果呢
作者: herry2003aa    时间: 2019-10-20 10:31
顶一个,确实是好东西,正需要!
作者: hello_access    时间: 2020-5-13 18:28
学习
作者: sunny2009110    时间: 2021-6-10 10:03
楼主厉害,谢谢分享!
作者: wuheng    时间: 2021-11-13 12:19
学习学习~~~




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3