细品RibbonX(32):labelControl元素详解

细品RibbonX(32):labelControl元素详解

资料整理来自于论坛
完整版下载地址:http://download.csdn.net/download/nodeman/10264659

 

 Loading ...

 

labelControl为开发者提供了一种在功能区中显示文本标签的方式。这类控件没有行为,通常用作其它控件的标题或描述。常常用来为在一列中排列的按钮提供上下文。

1、labelControl元素必需的属性

labelControl元素需要下表1所列的id属性之一。

表1:labelControl元素必需的属性

属性

何时使用

id

当创建自已的labelControl时

idMso

当使用已有的Microsoft labelControl时

idQ

当在命名空间之间创建共享的labelControl时

2、带有回调签名的可选的静态属性和动态属性

为了相对于另一个控件决定labelControl的位置,使用下表2列出的任一insert属性。

表2:labelControl元素可选的insert属性

INSERT属性

允许值

默认值

何时使用

insertAfterMso

有效的Mso组

在组末尾插入

在Microsoft控件之后插入

insertBeforeMso

有效的Mso组

在组末尾插入

在Microsoft控件之前插入

insertAfterQ

有效的组idQ

在组末尾插入

在共享的命名空间控件之后插入

insertBeforeQ

有效的组idQ

在组末尾插入

在共享的命名空间控件之前插入

也可以为labelControl元素设置下表3所列任意属性或等价的回调的组合。

表3:labelControl元素可选的属性和回调

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

enabled

getEnabled

true,false,1,0

true

Sub GetEnabled(control

 As IRibbonControl,

ByRef returnedVal)

label

getLabel

1至1024个字符

(none)

Sub GetLabel(control As

IRibbonControl,

ByRef returnedVal)

screentip

getScreentip

1至1024个字符

(none)

Sub GetScreentip(control

As IRibbonControl,

ByRef returnedVal)

showLabel

getShowLabel

true,false,1,0

true

Sub GetShowLabel(control

 As IRibbonControl,

ByRef returnedVal)

supertip

getSupertip

1至1024个字符

(none)

Sub GetSupertip(control

As IRibbonControl,

ByRef returnedVal)

tag

(none)

1至1024个字符

(none)

(none)

visible

getVisible

true,false

true

Sub GetVisible(control

 As IRibbonControl,

ByRef returnedVal)

3、labelControl元素允许的子对象

labelControl元素不支持任何类型的子控件。

4、labelControl元素的父对象

在下列任何控件内都能放置labelControl元素:

n         box

n         group

5、使用内置的labelControl元素

Microsoft实际上在Excel中公开了6个labelControl元素。然而,创建自定义labelControl更快且更直接。

6、创建自定义的labelControl元素

labelControl的一个相当酷的使用是将其作为标记。

(1)创建一个新的.xlsm文件,并将其保存为Excel labelControl Example.xlsm。

(2)关闭该文件并在CustomUI Editor中打开。

(3)输入下列XML代码:

<customUI onLoad=rxIRibbonUI_onLoadxmlns=http://schemas.microsoft.com/office/2006/01/customui>

    <ribbon startFromScratch=false>

        <tabs>

            <tab id=rxtabDemo

                 insertBeforeMso=TabHome

                 label=Demo>

                <group id=rxgrpDemo

                       label=Demo Group>

                      <labelControl id=rxlblFeedback

                                   getLabel=rxlblFeedback_getLabel/>

                      <button id=rxbtnProcess

                              getImage=rxbtnProcess_getImage

                             onAction=rxbtnProcess_click/>

                </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

(4)生成回调签名,保存后关闭CustomUIEditor。

(5)在Excel中重新打开该文件,在VBE的标准模块中粘贴回调签名。

在编辑回调代码之前,让我们先考虑一个完整的操作过程。我们希望在单击按钮之前标签去读取Process Accounts,随后是Accounts Complete。我们需要一个变量,存储表明按钮是否被单击,因此在模块的开始声明该变量:

Dim bButtonClicked AsBoolean

当然,还需要包括一个存储RibbonUI的全局变量。现在,创建onLoad回调代码:

Dim rxIRibbonUI AsIRibbonUI

 

‘customUI.onLoad回调

Sub rxIRibbonUI_onLoad(ribbonAs IRibbonUI)

    Set rxIRibbonUI = ribbon

End Sub

接下来,为labelControl创建getLabel回调。评估是否单击按钮的最容易的方法是检查bButtonClicked变量。使用Select Case语句,如下所示:

‘rxlblFeedback getLabel回调

SubrxlblFeedback_getLabel(control As IRibbonControl, ByRef returnedVal)

    Select Case bButtonClicked

        Case False

            returnedVal = “Process Accounts”

        Case True

            returnedVal = “Accounts Complete”

    End Select

End Sub

同样,通过Select语句的评估决定显示图像或标签:

‘rxbtnProcess getImage回调

Sub rxbtnProcess_getImage(controlAs IRibbonControl, ByRef returnedVal)

    Select Case bButtonClicked

        Case False

            returnedVal =“CreateReportFromWizard”

        Case True

            returnedVal = “DeclineInvitation”

    End Select

End Sub

最后,来处理按钮。同样,检查bButtonClicked的值,如果为False,那么修改bButtonClicked的值为true,运行程序,然后使功能区无效。当然,无效将触发重建,控件将会更新以显示用户已经实施的操作。如果bButtonClicked的值已经是true,那么告诉用户他们已经完成了程序。代码如下:

‘rxbtnProcess onAction回调

SubrxbtnProcess_click(control As IRibbonControl)

    Select Case bButtonClicked

        Case False

            bButtonClicked = True

       

            ‘Code to process accounts goes here

           

            rxIRibbonUI.Invalidate

        Case True

            MsgBox “已经运行了这个程序!”

    End Select

End Sub

(6)保存并关闭该工作簿,然后重新打开该工作簿,结果如下图所示。

 

单击该按钮,该组将更新为下图所示的结果。

 

再次单击该按钮,将会弹出一条消息框。

正如上述代码所示,我们使用了标签和图形来唤起用户对状态的注意,或者状态的改变。这是一种技巧,即使用labelControl来警告用户对象或事件的状态。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值