首页 > 单独文章 > 正文

Office2007 用户界面(UI)的定制(一)

时间:2008-04-10 09:06:50 作者:officeba 【认证】

一个改进的用户界面(UI)

Microsoft Office 2007系统中的许多应用程序有一个新外观,即新的Microsoft Office Fluent用户界面(UI)取代了目前系统中的分层菜单、工具栏以及为效率和易于查找而简单优化过的任务窗格,而新的Fluent UI改进了上下文菜单、增强的屏幕提示、微型(Mini)工具栏和键盘快捷方式,帮助用户提高效率和生产力。

注:Fluent UI已应用在Microsoft Office 2007的几个应用程序中,包括Microsoft Office Access 2007Microsoft Office Excel 2007Microsoft Office PowerPoint 2007Microsoft 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文件,因为每个应用程序都使用相同的编程模型。

Office2007中应用程序的Fluent UI

图1:Office2007中应用程序的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/2006/01/customui” xmlns:x=”myNameSpace”> <button idQ=”x:myButton” … />

注:示例中使用命名空间x,以便于两个不同的加载项可以添加到相同的自定义组。只需要通过限制名来指向自定义组。