设为首页收藏本站Access中国
Office中国(www.office-cn.net),专业Office论坛

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

12下一页
返回列表 发新帖
查看: 757|回复: 14

快速制作自己的功能区

[复制链接]

点击这里给我发消息

发表于 2017-9-14 10:35:02 | 显示全部楼层 |阅读模式

下载:
游客,如果您要查看本帖隐藏内容请回复


早在以前,我写过 在Access 2010中可以更简单的创建、管理自定义功能区,在那篇文章中介绍的是利用 Access 选项的功能自定义一个功能区,这个功能区是全局的,不管打开那个数据库这个功能区存在。
那么,怎么样快速创建一个只属于当前数据库的专有功能区呢?

其实,很简单。在Access 2007以后版本的数据库中,可以创建一名为 uSysRibbons 的表,在这个表中存储功能区的定义就可以了,这个必须包含两个字段:
  • RibbonName,文本类型,长度可以自定,一般 50 就可以了,这个字段表示功能区的名称,它不能重复,可以把它定义为主键。
  • RibbonXML,备注类型。这个字段用来存储功能区的定义,即XML。


一条记录一个功能区。

功能区的结构如下:
  1. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  2.     <ribbon>
  3.         <qat/>
  4.         <tabs>
  5.             <tab id="tabMy" label="我的">
  6.                 <group id="grpFunctions" label="功能" autoScale="true">
  7.                     <button id="btnWelcome" label="欢迎来到 Access 世界" imageMso="HappyFace" size="large" onAction="欢迎" />
  8.                     <button id="btnDesign" label="自定义功能区" imageMso="TableDesign" size="large" onAction="自定义功能区" />
  9.                 </group>
  10.                 <group id="grpDB" label="数据库" imageMso="DatabaseCopyDatabaseFile" autoScale="true">
  11.                     <control idQ="FileCloseDatabase" size="large" />
  12.                 </group>
  13.             </tab>
  14.         </tabs>
  15.     </ribbon>
  16. </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 呢?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

点击这里给我发消息

 楼主| 发表于 2017-9-14 10:42:08 | 显示全部楼层
其实办法是有的,就是用 在Access 2010中可以更简单的创建、管理自定义功能区 文章中提到的导出功能。
例如,我在数据库中创建了四个对象:
  • 一个窗体,其命名为“欢迎”。
  • 一个数据表,命名为“uSysRibbons”,用于存储自定义的功能区,由于表名是以 uSys 开头,表示用户系统表,一般在导航空格中是隐藏的,不可见。
  • 一个打开“欢迎”窗体的宏,命名为“欢迎”。
  • 一个打开“uSysRibbons”表的宏,命名为“自定义功能区”。



接下来,我就实现实现自定义的功能区。

首先,点击“文件”选项卡,再点击“选项”,打开“Access选项”对话框,在对话框中选择“自定义功能区”,然后在右侧正角点击“新建选项卡(W)”。


这时,可以在“主选项卡”列表中看到,新增了“新建选项卡(自定义)”和“新建组(自定义)”,然后将这两项重命名。
  • 新建选项卡 -> 我的
  • 新建组 -> 功能
  • 采用同样的办法,还添加一个组,数据库。

如图:

然后,在左侧“从下列位置选择命令(C)”组合框中选择“宏”,


再在其列表中,将“欢迎”和“自定义功能区”拖到右侧的“功能(自定义)”之下,再在“从下列位置选择命令(C)”组合框中选择“常用命令”,将其列表中的“关闭数据库”拖到右侧的“数据库(自定义)”之下,如图:


这个时候,发现其命令前面的图标,与我们需要显示的图标和文本不符。一般可以通过“重命名(M)...”来更改其图标和显示文本。
==》

最后,来完成导出操作。点击右侧的“导入/导出(P)”下拉列表,选择“导出所有自定义设置”


输入导出的文件名“c.exportedUI”。事实上,导出的这个文件是一个XML文本文件,可以用记事本将其打开,将其格式化一下,好看一点。其内容如下:
  1. <mso:cmd app="Access" dt="0" />
  2. <mso:customUI xmlns:x1="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
  3.     <mso:ribbon>
  4.         <mso:qat/>
  5.         <mso:tabs>
  6.             <mso:tab id="mso_c1.C382220" label="我的??">
  7.                 <mso:group id="mso_c2.C382220" label="功能??" autoScale="true">
  8.                     <mso:button idQ="x1:欢迎_0_C49EBC5" label="欢迎来到 Access 世界" imageMso="HappyFace" onAction="欢迎" visible="true"/>
  9.                     <mso:button idQ="x1:自定义功能区_1_C49EBC5" label="自定义功能区" imageMso="TableDesign" onAction="自定义功能区" visible="true"/>
  10.                 </mso:group>
  11.                 <mso:group id="mso_c3.C4076D4" label="数据库??" autoScale="true">
  12.                     <mso:control idQ="mso:FileCloseDatabase" visible="true"/>
  13.                 </mso:group>
  14.             </mso:tab>
  15.         </mso:tabs>
  16.     </mso:ribbon>
  17. </mso:customUI>
复制代码

看看,是不是和我们前面的定义非常相似?所不同的就是多了许多“mso”。接下来的就是改造它,使之适合我们的需要。
步骤如下:
游客,如果您要查看本帖隐藏内容请回复

再看看,是不是更贴近我们的需要?
  1. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  2.     <ribbon>
  3.         <qat/>
  4.         <tabs>
  5.             <tab id="mso_c1.C382220" label="我的">
  6.                 <group id="mso_c2.C382220" label="功能" autoScale="true">
  7.                     <button idQ="欢迎_0_C49EBC5" label="欢迎来到 Access 世界" imageMso="HappyFace" onAction="欢迎" visible="true"/>
  8.                     <button idQ="自定义功能区_1_C49EBC5" label="自定义功能区" imageMso="TableDesign" onAction="自定义功能区" visible="true"/>
  9.                 </group>
  10.                 <group id="mso_c3.C4076D4" label="数据库" autoScale="true">
  11.                     <control idQ="FileCloseDatabase" visible="true"/>
  12.                 </group>
  13.             </tab>
  14.         </tabs>
  15.     </ribbon>
  16. </customUI>
复制代码

事实上,这段 XML 已经能够运行了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

 楼主| 发表于 2017-9-14 12:09:53 | 显示全部楼层
如果想将自定义的功能区放在 “开始” 选项卡的前面,只需要在第一个 tab 中输入 “ insertBeforeQ="TabHomeAccess"”


启用自定义功能区


是不是很爽?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2017-9-14 12:23:35 | 显示全部楼层
zhuyiwen 发表于 2017-9-14 12:09
如果想将自定义的功能区放在 “开始” 选项卡的前面,只需要在第一个 tab 中输入 “ insertBeforeQ="TabHom ...

谢谢分享
发表于 2017-9-15 06:17:00 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2017-9-15 08:12:15 | 显示全部楼层
谢谢分享
回复

使用道具 举报

点击这里给我发消息

发表于 2017-9-20 11:02:52 | 显示全部楼层
yyy
回复

使用道具 举报

发表于 2018-1-7 23:18:26 | 显示全部楼层
OOOOOOOOOO
发表于 2018-1-9 14:20:41 | 显示全部楼层
学习!
回复

使用道具 举报

发表于 2018-1-17 14:50:06 | 显示全部楼层
继续学习,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /6 下一条

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2018-10-19 04:48 , Processed in 0.094442 second(s), 39 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表