细品RibbonX(18):button控件详解

细品RibbonX(18):button控件详解

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

 

在功能区的按钮中,可以使用内置图像或提供自已的图像,可以指定大按钮或者更小的形式,添加少量的代码甚至可以同时提供标签。此外,可以利用大量的回调过程从而使按钮为动态的。按钮提供了几种用于定制外观和响应的属性。某些属性是必需的,另外一些是可选的。

在创建按钮时,下面所列出的表可以提供良好的参考。

1、button元素必需的属性

按钮需要下表1所列的id属性之一。

表1:button元素必需的属性

属性

何时使用

id

当创建自已的按钮时

idMso

当使用现有的Microsoft按钮时

idQ

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

每个按钮也需要表2所列出的onAction回调。

表2:button元素必需的回调

动态属性

允许值

VBA回调签名

onAction

1至4096个字符

Sub OnAction(control As IRibbonControl)

onAction

重新使用(或重利用)

Sub OnAction(control As IRibbonControl,

byRef CancelDefaultcancelDefault)

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

使用按钮时,可以使用下表3列出的任一insert属性。

表3:button元素可选的insert属性

INSERT属性

允许值

默认值

何时使用

insertAfterMso

有效的Mso组

在组末尾插入

在Microsoft控件之后插入

insertBeforeMso

有效的Mso组

在组末尾插入

在Microsoft控件之前插入

insertAfterQ

有效的组idQ

在组末尾插入

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

insertBeforeQ

有效的组idQ

在组末尾插入

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

也可以提供下表4所列的任何或所有的属性。

表4:button元素可选的属性和回调

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

description

getDescription

1至4096个字符

(none)

Sub GetDescription(control  As IRibbonControl,ByRef returnedVal)

enabled

getEnabled

true,false,1,0

true

Sub GetEnabled(control As                                              IRibbonControl,ByRef returnedVal)

image

getImage

1至1024个字符

(none)

Sub GetImage(control As                                              IRibbonControl,ByRef returnedVal)

imageMso

getImage

1至1024个字符

(none)

同上

keytip

getKeytip

1至3个字符

(none)

Sub GetKeytip(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)

showImage

getShowImage

true,false,1,0

true

Sub GetShowImage(control As IRibbonControl,ByRef returnedVal)

showLabel

getShowLabel

true,false,1,0

true

Sub GetShowLabel(control As IRibbonControl,ByRef returnedVal)

size

getSize

normal,large

normal

Sub GetSize(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,1,0

true

Sub GetVisible(control As IRibbonControl,ByRef returnedVal)

3、button元素允许的子对象

button控件不支持任何子对象。

4、button元素的父对象

在下列任何控件内都能放置button控件:

n        box

n        buttonGroup

n        dialogBoxLauncher

n        documentControls

n        dynamicMenu

n        gallery

n        group

n        menu

n        splitButton

n        officeMenu

5、使用内置的按钮控件

(1)创建一个新的.xlsx文件,并将其保存为Excel Built In Button Example.xlsx。

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

(3)应用RibbonBase模板。

(4)在<tabs>和</tabs>之间插入下列XML:

<tab id=rxtabCustom1

                 label=Demo

                 insertBeforeMso=TabHome>

                <group id=DemoGroup

                  label=Demo Group>

                   <button idMso=AccountingFormat/>

                </group>

            </tab>

下图为上述代码创建的组。

 

注意,当使用内置控件时,获得完整的包装:图像、标签、预设的回调,等等。因此,如果仅希望有图像和功能,则除了期望的idMso,需要设置showLabel属性为false。此时,简单地修改代码如下:

<tab id=rxtabCustom1

                 label=Demo

                 insertBeforeMso=TabHome>

                <group id=DemoGroup

                  label=Demo Group>

                   <button idMso=AccountingFormat

                       showLabel=false/>

                </group>

            </tab>

现在将创建仅显示图像的一个漂亮按钮,没有标签,如下图所示,当然它仍具有该内置控件的所有其他属性。

 

6、按钮的特性:showLabel属性

假设您希望上文中的按钮尺寸更大一些,则可以修改相应的代码如下:

                   <button idMso=AccountingFormat

                       showLabel=false

size=large/>

结果如下图所示:

 

代码中没有让标签显示,结果却出现了标签?这是按钮模型的一个奇怪的特性。在size=”normal”情况下正常工作的按钮,在size=”large”时却不按要求工作。如上所见,当按钮是大尺寸时,默认值覆盖了自定义的设置。

如何达到要求呢?要想在大尺寸时不显示标签,需要将标签文本指定为空格(必须要有一个空格)。如下所示:

               <group id=DemoGroup

                  label=Demo Group>

                   <button idMso=AccountingFormat

                       label=““

                       size=large/>

                </group>

结果如下图:

 

7、创建自定义按钮控件

即添加自已的按钮,单击该按钮时,会触发自已编写的宏代码实现自定义的功能。

本例中,假设你是一名会计师,并且已经为支付的费用创建了一份连续的清单,如下图所示,

 

现在需要编写宏代码以每月为基础来准备下月的工作表,特别是要完成下述操作:

(1)复制Ending Balance到Openning Balance列。

(2)清除Additions和Usage区(本月的条目)。

(3)预先填写到下月结束的日期。

(4)指导用户保存文件。

因此,在标准模块中编写下列代码:

Public Sub RollForward()

    With ActiveSheet

        .Range(“E6:E10″).Copy

        .Range(“B6:B10″).PasteSpecialPaste:=xlValues

        .Range(“C6:D10″).ClearContents

        .Range(“A3″) = .Range(“A3″).Value + 40– DatePart(“d”, .Range(“A3″).Value + 40)

   End With

   MsgBox “Rolled forward successfully!” &vbCrLf & _

       “Please save the file under a newname.”, _

       vbOKOnly + vbInformation, “Success!”

End Sub

可以按Alt+F8键,在“宏”对话框中选择RollForward来测试。

下面,我们将该宏附加到按钮中。首先,保存Excel文件并关闭。然后,在CustomUI Editor中打开该文件,输入下面的XML代码:

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

    <ribbon startFromScratch=false>

        <tabs>

            <tab id=DemoTab

                 label=Demo

                 insertBeforeMso=TabHome>

                <group id=DemoGroup

                       label=Demo Group>

                    <button id=rxbtnRollForward

                            label=Roll Forward

                            imageMso=CreateReportFromWizard

                            size=large

                            onAction=rxbtnRollForward_Click/>

                </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

单击“Generate Callbacks”生成回调,并复制生成的代码。保存并关闭CustomUI Editor,然后重新打开Excel。在VBE中粘贴从CustomUI Editor中复制的代码,然后添加代码来调用上面已经测试过的VBA过程。代码如下所示:

‘Callback forrxbtnRollForward onAction

SubrxbtnRollForward_Click(control As IRibbonControl)

    Select Case control.ID

        Case Is = “rxbtnRollForward”

            Call RollForward

        Case Else

            ‘do nothing

        End Select

End Sub

保存后,回到Excel界面,再测试按钮。

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值