2007 Office Fluent Ribbon定制用户指南(连载2)
一个改进的用户界面(UI)
在2007 Microsoft Office系统中的许多应用程序有一个新外观,即新的Microsoft Office Fluent用户界面(UI)取代了目前系统中的分层菜单、工具栏以及为效率和易于查找而简单优化过的任务窗格,而新的Fluent UI改进了上下文菜单、增强的屏幕提示、微型(Mini)工具栏和键盘快捷方式,帮助用户提高效率和生产力。
注:Fluent UI已应用在2007 Microsoft Office的几个应用程序中,包括Microsoft Office Access 2007、Microsoft Office Excel 2007、Microsoft Office PowerPoint 2007和Microsoft Office Word 2007。在Microsoft Office Outlook 2007中编辑一个Outlook项目时,Ribbon也是可用的。用户可以通过XML标记和任何基于Microsoft .NET框架的Microsoft Visual Studio语言相结合来定制Fluent UI,也可以使用Microsoft Visual Basic for Applications(VBA)、Microsoft Visual C++和Microsoft Visual Basic 6.0来定制Fluent UI。
增强用户体验的新方式
在早期版本的Office中,开发者利用工具和编程指令以创造性的方式来扩展Fluent UI。例如,CommandBars对象模型能使开发者在他们的自定义Office应用程序中创建丰富的解决方案。对传统进行发展后,UI扩展引入了一种创新的模型,可以用于增强用户体验。使用可扩展的标识语言(XML)和几种传统的编程语言之一来操纵组成Fluent UI的组件。因为XML是纯文本,可以在任何文本编辑器中创建自定义的文件,该文件用来处理Fluent UI。也可以稍作调整后重复使用自定义的Fluent UI文件,因为每个应用程序都使用相同的编程模型。

图1:2007 Office中应用程序的Fluent UI
使用XML标记文件来定制Fluent UI,极大地减少了基于commandBars对象模型的复杂的加载项的需求。然而,为以前的Office版本中编写的加载项将继续在Fluent UI中工作,而无需或很少需要修改。
已存在的解决方案还可用吗?
在以前的Office版本中,开发者使用commandBars对象模型来创建VB代码修改Fluent UI。而在2007版本的Office中,先前的代码在大多数情况下不需要修改而可以继续工作。但是,在Microsoft Office 2003对工具栏所作的修改现在会出现在“加载项”选项卡中,显示的定制类型取决于加载项原先的设计。例如,Office创建“菜单命令”组包含添加到以前菜单结构(例如文件菜单、插入菜单和工具菜单)中的项目;Office创建“工具栏命令”组包含添加到以前内置工具栏(例如标准工具栏、格式工具栏和图片工具栏)中的项目;此外,通过加载项或文档添加的自定义工具栏将显示在“加载项”选项卡中的“自定义工具栏”组中。
为大多数Office应用程序定制Fluent UI
在Word 2007、Excel 2007或PowerPoint 2007中,可以使用下面的方式创建自定义应用程序级的Fluent UI。
- 使用COM加载项
- 使用指定应用程序的加载项,如.ppam和.xlam文件
- 在Word中使用模板(.dotm文件)
注:Access 2007和Outlook 2007实现Ribbon定制方式与其它Office应用程序稍有不同。
在典型的方案中,COM加载项代码包含从外部定制文件中或者从包含在代码自身的XML中返回XML标记的过程。当应用程序开启时,装载加载项并运行返回XML标记的代码。代码根据XSD架构(可选的)验证XML标记,然后将XML装载到内存中,并将其应用到Fluent UI,接着显示修改过的Fluent UI。Fluent UI命令和控件使用回调过程来运行加载项中的代码。
文档级的定制使用相同的XML标记和带有下列扩展名之一的Office Open XML格式文件:.docx、.docm、.xlsx、.xlsm、.pptx或.pptm。为这些解决方案,用户创建一个包含XML标记的定制文件并将其保存在一个文件夹中,然后用户修改在Office Open XML 格式容器中指向定制文件的部分。当在Office应用程序中打开该文档时,应用程序装载定制文件到内存中并将其应用到Fluent UI,接着命令和控件调用包含在文档中的代码来提供功能。
使用回调
指定回调在运行时从Fluent UI中更新属性并执行操作。例如,要指定用户单击Ribbon(功能区)中某按钮时发生的操作,必须为该按钮提供onAction回调函数。此时,RibbonX标记像如下代码所示:
<button id=”myButton” onAction=”MyButtonOnAction” />
这行标记告诉Office在单击该按钮时,调用MyButtonOnAction方法。取决于用户所选择的语言,MyButtonOnAction方法有一个指定的签名。下面是一个示例:
Public Sub MyButtonOnAction(ByVal control As IRibbonControl)
If control.ID = “myButton” Then
System.Windows.Forms.MessageBox.Show (”Button clicked!”)
End If
End Sub
注:取决于用户如何创建定制,可能需要添加对System.Windows.Forms集的引用来调用MessageBox.Show方法。
MyButtonOnAction过程必须声明为public,参数control传递唯一的id和该控件的tag属性,这可以使用户为多个控件使用相同的回调过程。
注:在Ribbon XML定制标记中所有的属性都区分大小写,除了示例中包括的onAction和insertBeforeMso外,每个单词的第一个字母都是大写的。
定制Fluent UI的两种方式
支持Ribbon(Access 2007除外,另有介绍)的应用程序提供了两种方式来使用XML标记定制Fluent UI:通过使用包含XML标记的Office Open XML格式文件,或者通过使用包含XML标记的COM加载项。(在Outlook中,仅COM加载项可以定制Fluent UI。)指定在XML标记中的任何变化都会添加到已存在的Fluent UI中,例如提供识别自定义选项卡的XML标记将在宿主应用程序中添加一个单独的选项卡到已存在的选项卡中。
在RibbonX标记中的所有控件必须包括下面的标识符之一:
表1:在所有控件中必须使用这些标识符之一
| 标识符 | 描述 |
|---|---|
| id | 为控件指定一个唯一的标识符,与自定义控件一起使用,这个标识符作为IRibbonControl中的一个属性传递到回调函数中。 |
| idMso | 指定一个内置控件的标识符。 |
| idQ | 指定一个限制标识符,使用命名空间缩写为前缀,参见下面的例子。 |
<customUI xmlns=”http://schemas.microsoft.com/office/
注:示例中使用命名空间x,以便于两个不同的加载项可以添加到相同的自定义组。只需要通过限制名来指向自定义组。
XML标记文件的通用格式
可以使用XML标记来定制Fluent UI。下面的示例展示了在Word 2007中定制Fluent UI的XML标记文件的通用格式,标记如下:
<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“>
<ribbon>
<tabs>
<tab idMso=”TabHome”>
<group idMso=”GroupFont” visible=”false” />
</tab>
<tab id=”CustomTab” label=”My Tab”>
<group id=”SampleGroup” label=”Sample Group”>
<toggleButton id=”ToggleButton1″ size=”large”
label=”Large Toggle Button”
getPressed=”ThisDocument.MyToggleMacro”
onAction=”ThisDocument.MyActionMacro” />
<checkBox id=”CheckBox1″ label=”A CheckBox”
screentip=”This is a check box”
onAction=”ThisDocument.MyCheckboxMacro” />
<editBox id=”EditBox1″ getText=”ThisDocument.MyTextMacro”
label=”My EditBox” onChange=”ThisDocument.MyEditBoxMacro”/>
<comboBox id=”Combo1″ label=”My ComboBox”
onChange=”ThisDocument.MyComboBoxMacro”>
<item id=”Zip1″ label=”33455″ />
<item id=”Zip2″ label=”81611″ />
<item id=”Zip3″ label=”31561″ />
</comboBox>
<dialogBoxLauncher>
<button id=”Launcher1″ screentip=”My Launcher”
onAction=”ThisDocument.MyLauncherMacro” />
</dialogBoxLauncher>
</group>
<group id=”MyGroup” label=”My Group” >
<button id=”Button1″ label=”My Large Button”
size=”large” onAction=”ThisDocument.MyButtonMacro” />
<button id=”Button2″ label=”My Normal Button”
size=”normal” onAction=”ThisDocument.MyOtherButtonMacro” />
</group >
</tab>
</tabs>
</ribbon>
</customUI>
这段XML标记导致的结果如图2所示。

图2:在Word中Fluent UI定制示例
这个示例对Word 2007中的Fluent UI作出了下面的变化:
1、示例为XML标记声明了默认的命名空间。
2、示例隐藏了位于“开始”选项卡中内置的“字体”组。
3、示例在内置选项卡的最右侧添加了一个新的“CustomTab”选项卡,标签名为MyTab。
注:使用id标识符属性创建自定义项,例如自定义选项卡。使用idMso标识符属性来指定内置的项目,例如“TabHome”(开始)选项卡。
4、示例添加了一个新的“SampleGroup”组到“MyTab”选项卡中。
5、示例添加了一个大尺寸的ToogleButton1按钮(切换按钮)到“MyGroup”组中,该标记指定了onAction和getPressed回调。
6、示例添加了一个CheckBox1复选框到“MyGroup”组中,带有自定义的屏幕提示,也指定了onAction回调。
7、示例添加了一个EditBox1编辑框到“MyGroup”组中,并指定了一个onChange回调。
8、示例添加了一个Combo1组合框到“MyGroup”组中,带有三个项目,并指定了onChange回调。
9、示例添加了一个Launcher1启动器到“MyGroup”组中,设置了onAction回调。
启动器通常显示一个自定义对话框,为用户提供更多的选项。
10、示例添加了一个新的“MyGroup”组到自定义选项卡中。
11、示例添加一个大尺寸的Button1按钮到“MyGroup”组中,并指定了getText回调和onAction回调。
12、示例添加了一个正常尺寸的Button2到“MyGroup”组中,并指定了onAction回调。
创建RibbonX标记最容易的方式是使用一个有效的XML编辑器。如果提供了必须的架构(XSD)文件,则Microsoft Visual Studio 2005提供了这样一个可供使用的编辑器。在本例中,您需要当前customUI.xsd的一个副本,在一些地方可以找到该文件。例如,当安装Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System时,将添加该架构到Visual Studio架构目录中,因此在Visual Studio项目中默认情况下该架构是可用的。也可以在MSDN网站中找到该架构。在Visual Studio中,创建一个新的XML文件,在属性窗口,设置Schemas属性来包括customUI.xsd文件(或者在代码中输入架构引用,如前面的XML文档中所示)。然后,当输入XML内容到文件中时,可以利用Microsoft的智能感应技术。也可以下载XML Notepad 2006,能够以树状格式编辑和查看XML内容。

发表评论