分享

20.4.4 RibbonX控件回调函数实例(1) - 51CTO.COM

 土尔 2011-03-24

20.4.4  RibbonX控件回调函数实例(1)

前面介绍的实例都没有使用RibbonX控件的回调函数。在实际应用中,很多地方都需要使用回调函数才能完成具体的工作。下面以实例演示回调函数的使用方法,创建类似Excel 2007功能区【开始】选项卡的【剪贴板】组中的【粘贴】分离按钮控件,当用户单击下方的按钮时将弹出下拉按钮列表,如图20-29左图所示。单击其中某个按钮后,上方显示的按钮将变为该按钮图标。鼠标指向按钮时,下方将显示提示信息,如图20-29右图所示。

 
(点击查看大图)图20-29  新建RibbonX控件

具体的步骤如下:

(1)向Excel工作簿中添加以下自定义RibbonX控件的XML代码:

 

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui
onLoad="rxcustomUI_onLoad">
<ribbon>
<tabs>
<tab id="rxGoto"  label="跳转" >
<group id="rxMoveCell" label="单元格移动" >
<splitButton id="rxSplit"  size="large" >
<button id="rxButton"   getImage="rxButton_getImage"
getLabel="rxButton_getLabel"
getSupertip="rxButton_getSupertip" onAction="rxButton_
onAction" />
<menu id="rxMenu" >
<button id="rxMenuTop"  label="顶部"
imageMso="FillUp"
onAction="rxMenu_onAction" />
<button id="rxMenuLeft" label="左侧"
imageMso="FillLeft"
onAction="rxMenu_onAction" />
<button id="rxMenuRight"  label="右侧"
imageMso="FillRight"
onAction="rxMenu_onAction" />
<button id="rxMenuBottom"  label="底部"
imageMso="FillDown"
onAction="rxMenu_onAction" />
</menu>
</splitButton>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
以上代码中,第1行语句中添加了onLoad属性,该属性设置系统装载自定义RibbonX时执行的回调函数名称,需要在VBE中编写名为rxcustomUI_onLoad的过程,具体代码如下:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui
onLoad="rxcustomUI_onLoad">
<splitButton>元素中包含1个按钮(<button>控件)和1个菜单(<menu>控件),在<menu>控件中添加4个按钮控件。<splitButton>元素中包含的按钮用来显示上一步操作过的按钮图标,在下拉菜单中选择不同按钮后,该按钮将自动更新其图标、提示文字和标签文字,因此,使用了getImage、getLabel、getSupertip 3个属性分别设置3个回调函数,具体代码如下:
<button id="rxButton"   getImage="rxButton_getImage"
getLabel="rxButton_getLabel"
getSupertip="rxButton_getSupertip" onAction="rxButton_onAction" />

 

而<menu>控件包含的4个按钮控件只需要使用onAction属性设置一个回调函数即可。

(2)将上述XML代码添加到Excel工作簿中后,在Excel 2007中打开该工作簿即可看到自定义的RibbonX控件,如图20-29所示。

(3)按组合键Alt+F11进入VBE环境。

(4)向工程中插入一个模块,在模块声明部分输入以下代码声明2个模块变量:

 

Dim moRibbon As IribbonUI '模块变量,获取对Ribbon的引用
Dim str1 As String   '模块变量,保存当前按钮的状态
(5)当Excel 2007装载自定义RibbonX时,将调用onLoad属性设置的回调函数。在程序中只能通过该回调函数获取RibbonX对象的引用。具体代码如下:
Sub rxcustomUI_onLoad(ribbon As IRibbonUI)
Set moRibbon = ribbon '获取对Ribbon的引用
End Sub
(6)编写getImage属性设置的回调函数如下:
Sub rxButton_getImage(Control As IRibbonControl, ByRef returnedVal)
If str1 = "" Then str1 = "Right"
Select Case str1
Case "Top"
returnedVal = "FillUp"
Case "Left"
returnedVal = "FillLeft"
Case "Right"
returnedVal = "FillRight"
Case "Bottom"
returnedVal = "FillDown"
End Select
End Sub
回调函数的参数可参见本章20.2.4节中的介绍。以上代码通过模块变量str1,判断当前使用过的按钮,再使用参数returnedVal返回对应按钮的图像ID(使用内置图像)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多