细品RibbonX(44):在Office菜单中添加项目
资料整理来自于论坛
完整版下载地址:http://download.csdn.net/download/nodeman/10264659
Loading ...
Office菜单就是应用程序窗口左上角的一个小的应用程序按钮,这个按钮被称作Office按钮,包含一些通用的操作或命令,例如打印、保存和发布。定制Office菜单时,其下的命令将影响整个文档,而不是文档的特定部分,例如段落或字体格式。
Office菜单使用下面的XML标记:
<officeMenu>
<!--
Everything else goes here
-->
</officeMenu>
下表列出了Office菜单的子元素。
对象 | 用来做什么 |
control | 引用通用控件对象,能够表现其它对象例如按钮、拆分按钮、组,等 |
button | 引用通过正常的单击就能执行某类操作的按钮控件 |
gallery | 引用库控件 |
toggleButton | 引用切换按钮,在True/False值之间切换 |
menuSeparator | 引用菜单分隔条项 |
splitButton | 引用能够用于容纳其它控件例如按钮控件的拆分按钮 |
menu | 引用能够用于容纳其它控件例如按钮控件的菜单控件 |
dynamicMenu | 引用动态菜单,能够在运行时接受动态的XML内容 |
下图为定制Excel中Office菜单的一个示例。在Office菜单中添加了一个拆分按钮My Tools,包含两个组My Toolset1和My Toolset2。
在这个示例中,我们创建了包含菜单(根据特定任务组织的几个按钮)的拆分按钮,XML代码如下:
<customUIxmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbonstartFromScratch="false">
<officeMenu>
<splitButton
id="rxsbtn"
insertBeforeMso="FilePrintMenu">
<button
id="rxbtnSplitMain"
label="My Tools"
imageMso="CreateModule"/>
<menu
id="rxmnu"
itemSize="large">
<menuSeparator
id="rxsep1"
title="My Toolset 1"/>
<button
id="rxbtnEmailSheet"
imageMso="FileSendAsAttachment"
label="E-mail sheet as attachment"
description="E-mail the active sheet as an attachment"
onAction="rxshared_click"/>
<button
id="rxbtnEmailSupport"
imageMso="MessageToAttendeesMenu"
label="E-mail technical support"
description="E-mail technical support about issues on this application..."
onAction="rxshared_click"/>
<button
id="rxbtnEmailBug"
imageMso="ResearchPane"
label="E-mail a bug"
description="E-mail technical support about bugs found on this application..."
onAction="rxshared_click"/>
<menuSeparator
id="rxsep2"
title="My Toolset 2"/>
<button
id="rxbtnPrintPDF"
imageMso="FilePrint"
label="Print to PDF"
description="Print active sheet to PDF file format"
onAction="rxshared_click"/>
</menu>
</splitButton>
</officeMenu>
</ribbon>
</customUI>
实际上,菜单控件也可以提供相同的定制而不须像拆分按钮那样的中间步骤,例如上例可以修改如下:
<customUIxmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbonstartFromScratch="false">
<officeMenu>
<menu
id="rxmnu"
insertBeforeMso="FilePrintMenu"
label="My Tools"
imageMso="CreateModule"
itemSize="large">
<menuSeparator
id="rxsep1"
title="My Toolset 1"/>
<button
id="rxbtnEmailSheet"
imageMso="FileSendAsAttachment"
label="E-mail sheet as attachment"
description="E-mail the active sheet as an attachment"
onAction="rxshared_click"/>
<button
id="rxbtnEmailSupport"
imageMso="MessageToAttendeesMenu"
label="E-mail technical support"
description="E-mail technical support about issues on this application..."
onAction="rxshared_click"/>
<button
id="rxbtnEmailBug"
imageMso="ResearchPane"
label="E-mail a bug"
description="E-mail technical support about bugs found on this application..."
onAction="rxshared_click"/>
<menuSeparator
id="rxsep2"
title="My Toolset 2"/>
<button
id="rxbtnPrintPDF"
imageMso="FilePrint"
label="Print to PDF"
description="Print active sheet to PDF file format"
onAction="rxshared_click"/>
</menu>
</officeMenu>
</ribbon>
</customUI>
结果如下图所示:
可以看出,实现的效果并没有太大的差异。如果认真观察,就会发现拆分按钮在箭头和按扭之间有一条分隔线,而菜单则没有。
上面的示例是在Office菜单中添加自已自定义的项目,当然也可以在Office菜单里的内置元素中添加自定义项目或内置项目,此时您需要知道在什么元素中放置项目,下表列出了Office菜单元素。
表:Office菜单元素
元素 | 类型 | IDMSO | 应用于 |
新建 | 按钮 | FileMenu | Excel/Access/Word |
打开 | 按钮 | FileOpen | Excel/Word |
打开 | 按钮 | FileOpenDatabase | Access |
保存 | 按钮 | FileSave | Excel/Word/Access |
另存为 | 拆分按钮 | FileSaveAsMenu | Excel/Word |
另存为 | 拆分按钮 | FileSaveAsMenuAccess | Access |
打印 | 拆分按钮 | FilePrintMenu | Excel/Word/Access |
准备 | 菜单 | FilePrepareMenu | Excel/Word |
管理 | 菜单 | FileManageMenu | Access |
发送 | 菜单 | FileSendMenu | Excel/Word |
电子邮件 | 按钮 | FileSendAsAttachment | Access |
发布 | 菜单 | MenuPublish | Excel/Word/Access |
关闭 | 按钮 | FileClose | Excel/Word |
关闭数据库 | 按钮 | FileCloseDatabase | Access |