Office中国论坛/Access中国论坛
标题:
快速制作自己的功能区
[打印本页]
作者:
zhuyiwen
时间:
2017-9-14 10:35
标题:
快速制作自己的功能区
[attach]61982[/attach]
下载:
早在以前,我写过
在Access 2010中可以更简单的创建、管理自定义功能区
,在那篇文章中介绍的是利用 Access 选项的功能自定义一个功能区,这个功能区是全局的,不管打开那个数据库这个功能区存在。
那么,怎么样快速创建一个只属于当前数据库的专有功能区呢?
其实,很简单。在Access 2007以后版本的数据库中,可以创建一名为
uSysRibbons
的表,在这个表中存储功能区的定义就可以了,这个必须包含两个字段:
RibbonName
,文本类型,长度可以自定,一般 50 就可以了,这个字段表示功能区的名称,它不能重复,可以把它定义为主键。
RibbonXML
,备注类型。这个字段用来存储功能区的定义,即XML。
[attach]61983[/attach]
一条记录一个功能区。
功能区的结构如下:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<qat/>
<tabs>
<tab id="tabMy" label="我的">
<group id="grpFunctions" label="功能" autoScale="true">
<button id="btnWelcome" label="欢迎来到 Access 世界" imageMso="HappyFace" size="large" onAction="欢迎" />
<button id="btnDesign" label="自定义功能区" imageMso="TableDesign" size="large" onAction="自定义功能区" />
</group>
<group id="grpDB" label="数据库" imageMso="DatabaseCopyDatabaseFile" autoScale="true">
<control idQ="FileCloseDatabase" size="large" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
复制代码
从这段 XML 我们可以看出:
<customUI> 标记表示自定义 UI (UI: User Interface 用户界面),其 xmlns 指明空间和框架,这里指的是 Office 2010 支持的 UI 格式,如果是 Office 2007 的,则是:"http://schemas.microsoft.com/office/2006/01/customui"。
<ribbon> 标记表示 UI 中的自定义功能区部分。
<qat> 标记表示功能区中的快速访问区。在这个 XML 中,无自定义。
<tabs> 标记表示功能区自定义的所有选项卡。
<tab> 标记表示所有选项卡中某个选项卡。
<group> 标记表示选项卡中的某个分组,一个选项卡中可以包含多个分组。在分组中可以多个控件,如 button/checkBox/editBox/comboBox/toggleButton 等等,其中 button 用得最多。
问题是,我们一般都记不住这样的格式,Access 又没有一个设计模板,直接用记事本编写这段 XML 极容易遗漏出错。那么,有没有好点的办法来生成这段 XML 呢?
作者:
zhuyiwen
时间:
2017-9-14 10:42
其实办法是有的,就是用
在Access 2010中可以更简单的创建、管理自定义功能区
文章中提到的导出功能。
例如,我在数据库中创建了四个对象:
一个窗体,其命名为“欢迎”。
一个数据表,命名为“uSysRibbons”,用于存储自定义的功能区,由于表名是以 uSys 开头,表示用户系统表,一般在导航空格中是隐藏的,不可见。
一个打开“欢迎”窗体的宏,命名为“欢迎”。
一个打开“uSysRibbons”表的宏,命名为“自定义功能区”。
[attach]61985[/attach]
接下来,我就实现实现自定义的功能区。
首先,点击“
文件
”选项卡,再点击“
选项
”,打开“Access选项”对话框,在对话框中选择
“自定义功能区
”,然后在右侧正角点击“
新建选项卡(
W
)
”。
[attach]61986[/attach]
这时,可以在“主选项卡”列表中看到,新增了“新建选项卡(自定义)”和“新建组(自定义)”,然后将这两项重命名。
新建选项卡 -> 我的
新建组 -> 功能
采用同样的办法,还添加一个组,数据库。
如图:[attach]61987[/attach]
然后,在左侧“从下列位置选择命令(
C
)”组合框中选择“宏”,
[attach]61988[/attach]
再在其列表中,将“欢迎”和“自定义功能区”拖到右侧的“功能(自定义)”之下,再在“从下列位置选择命令(
C
)”组合框中选择“常用命令”,将其列表中的“关闭数据库”拖到右侧的“数据库(自定义)”之下,如图:
[attach]61989[/attach]
这个时候,发现其命令前面的图标,与我们需要显示的图标和文本不符。一般可以通过“重命名(
M
)...”来更改其图标和显示文本。
[attach]61990[/attach] ==》[attach]61991[/attach]
最后,来完成导出操作。点击右侧的“导入/导出(
P
)”下拉列表,选择“导出所有自定义设置”
[attach]61992[/attach]
输入导出的文件名“c.exportedUI”。事实上,导出的这个文件是一个XML文本文件,可以用记事本将其打开,将其格式化一下,好看一点。其内容如下:
<mso:cmd app="Access" dt="0" />
<mso:customUI xmlns:x1="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
<mso:ribbon>
<mso:qat/>
<mso:tabs>
<mso:tab id="mso_c1.C382220" label="我的??">
<mso:group id="mso_c2.C382220" label="功能??" autoScale="true">
<mso:button idQ="x1:欢迎_0_C49EBC5" label="欢迎来到 Access 世界" imageMso="HappyFace" onAction="欢迎" visible="true"/>
<mso:button idQ="x1:自定义功能区_1_C49EBC5" label="自定义功能区" imageMso="TableDesign" onAction="自定义功能区" visible="true"/>
</mso:group>
<mso:group id="mso_c3.C4076D4" label="数据库??" autoScale="true">
<mso:control idQ="mso:FileCloseDatabase" visible="true"/>
</mso:group>
</mso:tab>
</mso:tabs>
</mso:ribbon>
</mso:customUI>
复制代码
看看,是不是和我们前面的定义非常相似?所不同的就是多了许多“mso”。接下来的就是改造它,使之适合我们的需要。
步骤如下:
再看看,是不是更贴近我们的需要?
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<qat/>
<tabs>
<tab id="mso_c1.C382220" label="我的">
<group id="mso_c2.C382220" label="功能" autoScale="true">
<button idQ="欢迎_0_C49EBC5" label="欢迎来到 Access 世界" imageMso="HappyFace" onAction="欢迎" visible="true"/>
<button idQ="自定义功能区_1_C49EBC5" label="自定义功能区" imageMso="TableDesign" onAction="自定义功能区" visible="true"/>
</group>
<group id="mso_c3.C4076D4" label="数据库" autoScale="true">
<control idQ="FileCloseDatabase" visible="true"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
复制代码
事实上,这段 XML 已经能够运行了。
作者:
zhuyiwen
时间:
2017-9-14 12:09
如果想将自定义的功能区放在 “开始” 选项卡的前面,只需要在第一个 tab 中输入 “ insertBeforeQ="TabHomeAccess"”
[attach]61993[/attach]
启用自定义功能区
[attach]61994[/attach]
是不是很爽?
作者:
access新新新手
时间:
2017-9-14 12:23
zhuyiwen 发表于 2017-9-14 12:09
如果想将自定义的功能区放在 “开始” 选项卡的前面,只需要在第一个 tab 中输入 “ insertBeforeQ="TabHom ...
谢谢分享
作者:
ardu95
时间:
2017-9-15 06:17
学习学习
作者:
c101
时间:
2017-9-15 08:12
谢谢分享
作者:
kui54312312
时间:
2017-9-20 11:02
yyy
作者:
六月雪
时间:
2018-1-7 23:18
OOOOOOOOOO
作者:
lshstruc
时间:
2018-1-9 14:20
学习!
作者:
xiaowuo2
时间:
2018-1-17 14:50
继续学习,谢谢分享
作者:
qtx
时间:
2018-4-29 03:18
看看
作者:
天涯沦落20131
时间:
2018-5-7 08:20
ddddd
作者:
做梦
时间:
2018-6-30 08:01
acc功能区学习
作者:
jiutianxingchen
时间:
2018-8-21 14:30
看看
作者:
XMX64311
时间:
2018-11-16 16:55
有好多问题还没解决,特别是选项卡会自动跳转到第一个,用起来很不爽
作者:
小何
时间:
2020-1-8 20:52
526262626226
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3