细品RibbonX(23):comboBox控件详解

本文详细介绍了RibbonX中comboBox控件的使用方法及属性配置,包括静态属性、动态属性、回调签名等,并通过两个实例展示了如何创建内置和自定义的组合框控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

细品RibbonX(23):comboBox控件详解

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

 Loading ...

 

组合框控件基于指定的记录源显示数据,它是编辑框和下拉控件的组合。该控件最明显的特征之一是:不仅能够从列表中选取项目,而且能够在其中输入项目。

comboBox控件常用于下列情形:

n         列表非常长,希望用户在输入一些关键词后能够迅速跳到合适的地方。(例如fonts控件)

n         希望呈现给用户一个预定义列表,同时也希望能够在列表中添加项目。

可以使用静态列表或动态创建列表来填充组合框。

1、comboBox元素必需的属性

组合框控件需要下表1所列的id属性之一。

表1:comboBox元素必需的属性

属性

何时使用

id

当创建自已的组合框时

idMso

当使用现有的Microsoft组合框时

idQ

当在命名空间之间创建共享的组合框时

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

组合框控件可以使用下表2列出的任一insert属性。

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

INSERT属性

允许值

默认值

何时使用

insertAfterMso

有效的Mso组

在组末尾插入

在Microsoft控件之后插入

insertBeforeMso

有效的Mso组

在组末尾插入

在Microsoft控件之前插入

insertAfterQ

有效的组idQ

在组末尾插入

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

insertBeforeQ

有效的组idQ

在组末尾插入

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

也可以为组合框设置下表3所列的任何或所有的属性或回调。

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

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

(none)

onChange

1至4096个字符

(none)

Sub OnChange(control

  As IRibbonControl,

text As String)

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)

同上

(none)

getItemCount

1至1024个字符

(none)

Sub GetItemCount(control As

 IRibbonControl,

ByRef returnedVal)

(none)

getItemID

1至1024个字符

(none)

Sub GetItemID(control As

 IRibbonControl,

index As Integer,

ByRef id)

(none)

getItemImage

独立的文本字符串

(none)

Sub GetItemImage(control As

 IRibbonControl,

index As Integer,

ByRef returnedVal)

(none)

getItemLabel

1至1024个字符

(none)

Sub GetItemLabel(control As IRibbonControl,

index As Integer,

ByRef returnedVal)

(none)

getItemScreentip

1至1024个字符

(none)

Sub GetItemScreenTip(control As IRibbonControl,

index As Integer,

ByRef returnedVal)

(none)

getItemSupertip

1至1024个字符

(none)

Sub GetItemSuperTip(control As IRibbonControl,

index As Integer,

ByRef returnedVal)

keytip

getKeytip

1至3个字符

(none)

Sub GetKeytip(control As                                             IRibbonControl,

ByRef returnedVal)

label

getLabel

1至1024个字符

(none)

Sub GetLabel(control As 

IRibbonControl,

ByRef returnedVal)

maxLength

(none)

1至1024个字符

1024

(none)

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)

showItemAttribute

(none)

true,false,1,0

true

(none)

showItemImage

(none)

true,false,1,0

true

(none)

showLabel

getShowLabel

true,false

true

Sub GetShowLabel(control As

 IRibbonControl,

ByRef returnedVal)

sizeString

(none)

1至1024个字符

12

(none)

supertip

getSupertip

1至1024个字符

(none)

Sub GetSupertip(control

 As IRibbonControl,

ByRef returnedVal)

tag

(none)

1至1024个字符

(none)

(none)

(none)

getText

1至4096个字符

(none)

Sub GetText(control As

IRibbonControl,

ByRef returnedVal)

visible

getVisible

true,false,1,0

true

Sub GetVisible(control

As

IRibbonControl,

ByRef returnedVal)

3、comboBox元素允许的子对象

comboBox元素可以使用的唯一的子对象是item元素。

4、comboBox元素的父对象

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

n         box

n         group

5、使用内置的组合框控件

在Excel的所有控件中,最著名的可能是字体组合框。如果创建组合最常使用的控件的自定义选项卡,那么将会添加字体组合框控件。

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

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

(3)输入下列XML代码:

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

    <ribbon startFromScratch=false>

        <tabs>

            <tab id=rxtabDemo

                 label=Demo

                 insertBeforeMso=TabHome>

                 <group id=rxgrpDemo

                        label=Demo>

                        <comboBox idMso=Font/>

                        <comboBox idMso=FontSize/>

                 </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

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

 

6、创建自定义组合框控件

本例中,假设您已经隐藏了完整的用户界面。此外,也试图使应用程序看起来不太像Excel,因为隐藏了所有的工作表标签。然而,您仍然想用户能够在三个工作表之间移动,因此需要提供一些手段来实现这项操作。在许多情形下,组合框控件是能够用于这类导航的理想的控件:列出应用程序中所有的“页面”,允许用户输入其希望跳转到的页面。

(1)新建一个工作簿,以.xlsm为扩展名保存后关闭。

(2)在CustomUI Editor中打开该工作簿,并输入下列XML代码:

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

    <ribbon startFromScratch=false>

        <tabs>

            <tab id=rxtabDemo

                 label=Navigation

                 insertBeforeMso=TabHome>

                 <group id=rxgrpNavigate

                        label=Navigate To>

                        <comboBox id=rxcboSelectSheet

                                 label=Activate:

                                 onChange=rxcboSelectSheet_Click>

                                 <item id=rxitemcboSelectSheet1

                                        label=Sheet1/>

                                 <item id=rxitemcboSelectSheet2

                                        label=Sheet2/>

                                 <item id=rxitemcboSelectSheet3

                                        label=Sheet3/>

                       </comboBox>

               </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

注意到该组合框利用onChange回调来产生当选择项目时的行为。此外,该组合框包含三个项目:Sheet1、Sheet2、Sheet3。这些项目是静态的并且不能从文件中修改,用户也不能添加其它项目,这确保了用户仅能在这三个工作表之间导航。

生成回调签名,并复制代码后关闭CustomUI Editor。

在Excel中打开该工作簿,打开VBE并将代码粘贴到一个标准模块中。下面编辑该回调以响应希望的操作。这时,可以通过考虑事件的顺序来解决如何实现:

(1)用户从工作表列表中选择一个项目。

(2)触发回调。

(3)将组合框中所选择的值(即工作表的名字)传递到程序。

(4)激活工作表。

然而,如果用户在组合框中输入值,会发生什么呢?要处理这些可能发生的事,应该编辑回调签名如下:

‘rxcboSelectSheet onChange回调

SubrxcboSelectSheet_Click(control As IRibbonControl, text As String)

    On Error Resume Next

    Worksheets(text).Activate

    If Err.Number <> 0 Then

        MsgBox “对不起,不存在这个工作表!”

    End If

End Sub

第2行代码试图激活传递给回调的名称的工作表。从列表中选择的项目总是有效的名字,而由用户输入的文本可能与列表中的项目不匹配。在开始部分的On Error语句告诉代码即使发生错误也继续运行下一行代码。

如果Err属性不为零,那么一定是发生了错误,因此用户输入的值是无效的。此外,因为希望让用户知道其输入是不可接受的,所以包括了一个消息框。

现在,就可以测试了:可以从组合框中选择一个值(如下图所示),也可以输入一个值。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值