要在
Office2007用户界面中添加自定义复选框,你可以使用XML和编程代码相结合,在Ribbon中添加自已的自定义复选框(checkboxes),或者重复使用一些内置复选框。
用于添加控件的XML可以使用checkBox元素来添加单个的复选框,通过使用属性如label属性来给复选框赋属性值。下面是代码:
<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“>
<ribbon startFromScratch=”false”>
<tabs>
<tab id=”tab1″ label=”CheckBox Demo” keytip=”z” >
<group id=”group1″ label=”Demo Group”>
<checkBox id=”checkbox1″
enabled=”true”
getLabel=”GetLabel”
keytip=”A1″
getScreentip=”GetScreentip”
supertip=”This is a super tip for the checkBox.”
visible=”true”
getPressed=”GetPressed”
onAction=”OnAction” />
<checkBox id=”checkbox2″
getLabel=”GetLabel”
onAction=”OnAction” />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
通过赋予tab元素label属性的文本,本示例在Office Fluent Ribbon中添加标题为CheckBox Demo的自定义选项卡。该选项卡包含Demo Group组,组中包含两个名为checkBox1和checkBox2的自定义复选框。这些复选框通过visible属性、enabled属性和keytip属性等来定义其属性。可以通过设置该属性相对应的字符串,明确地给这些属性赋值,例如supertip属性,或者直接指向编程代码过程。
enabled属性被设置为Ture,使得该复选框可用。当设置其为False时,该控件变灰,表明该复选框处于非活动状态。接下来的getLabel属性指向一个回调过程,来为该复选框定义标签。
keytip属性为复选框赋予按键提示(KeyTip)。按键提示有时称作访问键或加速键,可用于作为快捷键组合来激活控件。要在自定义选项卡控件中使用按键提示,首先为选项卡设置按键提示,或者使用Microsoft Office赋予的缺省的按键提示。然后,为该控件赋予按键提示。例如,在代码中,选项卡有一个等于z的快捷提示,checkbox1复选框有一个快捷提示等于A1。当Office Fluent Ribbon显示时,按下Alt+z组合键来使自定义选项卡获取焦点。然后,按下A+1组合键来激活该复选框,并执行在onAction属性中定义的过程。
接着,会看到getScreentip属性。屏幕提示是在鼠标指针移动到Office Fluent Ribbon中某项目上时出现的小框,提供了所选对象的信息。类似地,supertip属性(如果指向某回调过程,则为getSupertip属性)提供了关于该对象额外的信息。
前面带有get前缀的属性表明该属性指向回调过程,因此在代码中,getScreentip属性指向名为GetScreentip的回调过程。
注:回调过程的名称不一定与使用的属性名称相同。指向回调过程的属性也不一定在其前面都有get,例如onAction属性指向名为OnAction的回调过程。
supertip属性代表了控件属性的另一方面。一个没有get前缀的属性表示可以明确地给其赋文本值。在supertip属性的情形下,直接赋文本值取代了回调过程。也有例外,如onAction属性,该属性没有前缀get。
再看上面的XML代码,设置visible属性为Boolean值确定是否在Ribbon中显示该复选框。接着,getPressed属性指定该复选框缺省的行为。如果该复选框显示时,属性的值为True,表明选取了该复选框。相反,如果其值为False,则取消了该复选框的选取。
最后,onAction属性指向一个回调过程,当单击该复选框时执行此过程。
对Ribbon组件分配功能
在前面的XML示例中,一些属性指向回调过程。例如,checkbox元素有onAction属性,当单击该复选框时,调用OnAction方法或者回调过程。在OnAction方法中的代码为复选框提供功能。这些过程被称为回调,因为当单击该复选框时,该操作通知Microsoft Office需要注意该控件。然后,Microsoft Office调用返回通过OnAction属性定义的方法,并执行包含在方法中的操作。下面介绍这些回调过程。
getLabel属性调用的GetLabel回调过程。
Public Function GetLabel(ByVal control As IRibbonControl) As String
Dim strLabel As String = “”
Select Case control.ID
Case “checkbox1″: strLabel = “Insert text.”
Case “checkbox2″: strLabel = “Insert more text.”
End Select
Return strLabel
End Function
当Microsoft Office调用GetLabel过程时,IRibbonControl对象代表所传递的复选框。该过程测试对象的Id属性,根据所获取的值,赋文本值给变量。然后将该变量返回到Microsoft Office,显示其文本作为复选框的标签。
getScreentip属性也指向一个回调过程。在本例中,当移动鼠标指针到复选框上时,该过程返回一个显示的字符串。
Public Function GetScreenTip(ByVal control As IRibbonControl) As String
Return “Inserts text into the active worksheet.”
End Function
GetPressed回调过程返回一个Boolean值,指定复选框的缺省条件。如果为True,复选框显示时为选中状态。返回False(缺省值)表明该复选框的初始显示状态为没选中。
Public pressedState As Boolean = False
Public Function GetPressed(ByVal control As IRibbonControl) As Boolean
Return pressedState
End Function
最后,当单击复选框时,调用OnAction回调过程。在本例中,该过程测试正调用的控件的Id属性,然后插入该控件指定的文本到工作表A1单元格中。
Public Sub OnAction(ByVal control As IRibbonControl, ByVal pressed As Boolean)
If pressed Then
applicationObject.Range(”A1″).Value = _
“You selected the check box.”
Else
applicationObject.Range(”A1″).Value = _
“You cleared the check box.”
End If
pressedState = pressed
End Sub
实现Ribbon定制使用Visual Studio 2005整合上述XML和回调过程,最后的结果如图。