ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 15834|回复: 25

[分享]带图片的复合框——ImageCombo控件介绍

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-4-20 22:03 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:控件

引言:前面介绍了ImageList控件,本文将对ImageCombo控件进行简单的介绍。与ImageList控件一样,ImageCombo控件不是“控件工具箱”中的内部常用控件,使用前需要将其添加到控件工具箱中。在介绍过程中,要使用到ImageList控件。

分类:ExcelVBA>>控件的使用>>ImageCombo控件

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ImageCombo控件介绍
1 添加ImageCombo控件
在标准的控件工具箱中并没有ImageCombo控件,要使用该控件,必须先将其添加到控件工具箱中。如图1所示,在控件工具箱中单击右键,在弹出的菜单中选择“附加控件”。
 图1:附加控件
此时,出现如图2所示的“附加控件”对话框。
 
图2:附加控件对话框
在该对话框中,选中“Microsoft ImageComboBox Control,version 6.0”前的复选框,单击“确定”按钮后,在“控件工具箱”中将出现“ImageCombo”控件,如图3所示。
  图3:附加控件后的工具箱
注:由于本文中要用到ImageList控件,故将该控件一并添加到控件工具箱中,该控件位于ImageCombo控件的左边。
[此贴子已经被作者于2007-4-20 22:16:53编辑过]
g7zFS05p.jpg
N0ceUAK2.jpg
hg9zs2X3.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:04 | 显示全部楼层
2 ImageCombo控件简介
ImageCombo控件是标准Windows组合框的允许绘图版本,控件列表部分中的每一项都可以有一幅指定的图片。也就是说,该控件可以显示一个包含图片的项目列表,每一项可以有自己的图片,也可以对多个列表项使用相同的图片。
除了支持图片之外,ImageCombo还提供了一个对象和基于集合的列表控件。控件列表部分的每一项是一个不同的ComboItem对象,而且列表中的所有项组合起来构成 ComboItems集合,这就使它容易一项一项地指定诸如标记文本、ToolTip文本、关键字值以及缩进等级等属性。
ImageCombo控件包括一个ComboItem对象的集合。一个ComboItem对象定义了出现在控件列表部分中的项目的各种特性。
除了用列表项目来显示图片外,ImageCombo控件还使用集合和对象管理控件的列表部分。这使它很容易使用相似的对象和集合概念来对列表中的输入项进行操作,例如Add、Remove和Clear方法,以及For Each和With... End With结构。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:05 | 显示全部楼层
2.1 ImageCombo控件与“复合框”控件
ImageCombo控件类似于标准的Windows复合框控件,但同时有一些重要的区别。最明显的区别就是在复合框的列表部分可以为每一项加入图片,通过使用图像,用户可以更容易地在可能的选择中标识并选中选项。
如前所述,另一个不很明显但同样重要的区别是ImageCombo管理控件列表部分的方式。列表中的每一项是一个ComboItem对象,而列表本身则是这些对象的ComboItems集合。这样,列表的管理就变得简单化了,使单独或一起访问各项目变得更加简单,分配或更改那些决定项目内容和形式的属性也很方便。这种结构同时还使处理列表项所带的图片更加方便。
由于列表中的各个项目是集合中的对象,标准复合框控件中的某些属性就不再需要了(例如 List、ListIndex和ItemData)。因此,ImageCombo控件中就不再提供这些属性了。
ImageCombo列表中的每一项可以有三个与之相关联的图片。第一个图片,由Image属性指定,出现在控件下拉部分中,列表项文字的旁边。当在列表中选定SelImage属性时,则SelImag属性指定列表项的图片,SelImage图片出现在复合框编辑部分的旁边,和在列表部分中一样。OverlayImage属性提供了在主图片上叠放其它图片的方式,例如表示有特殊兴趣的复选标记,或者表示该项无效的X。
要管理用于列表项的这些图片,ImageCombo使用了ImageList公用控件。通过索引或引用存储在ImageList控件中图片的关键值将图片分配给ImageCombo中的项。
ImageCombo控件也支持多级缩进。缩进的数目是单个列表项的属性,所以即使列表被重新排序,列表项仍然保持它们的缩进层次。显示有不同的缩进层次可以突出列表的某些部分或显示层次结构关系。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
2.2 ImageCombo控件属性参考
ImageCombo控件具有下列属性:
Identation属性,SelectedItem属性(ActiveX控件),CaseSensitive属性,UsePathSep属性,Locked属性,ComboItems属性,DataFormat属性,Left、Top属性,TabIndex属性,Tag属性,DragIcon属性,DragMode属性,TabStop属性,HelpContextID属性,Index属性(控件矩阵),Name属性,Parent属性,Container属性,Object属性,ToolTipText属性,WhatsThisHelpID属性,OLEDragMode属性(ActiveX控件),OLEDropMode属性(ActiveX控件),SelLength、 SelStart、SelText属性(ActiveX控件),Text属性(ActiveX控件),Height、Width属性(ActiveX控件),Visible属性(ActiveX控件),BackColor、ForeColor属性(ActiveX控件),Enabled属性(ActiveX控件),Font属性(ActiveX控件),hWnd属性(ActiveX控件),MouseIcon属性(ActiveX控件),MousePointer属性(ActiveX控件),ImageList属性(ActiveX控件)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:06 | 显示全部楼层
2.3 ImageCombo控件方法参考
ImageCombo控件具有下列方法:
SetFirstVisible方法,GetFirstVisible方法,SetFocus方法,Drag方法,Move方法,ZOrder方法,ShowWhatsThis方法,OLEDrag方法(ActiveX控件),Refresh方法(ActiveX控件)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:07 | 显示全部楼层
2.4 ImageCombo控件事件参考
ImageCombo控件具有下列事件:
DropDown事件(ImageCombo控件),DragDrop事件,DragOver事件,GotFocus事件,LostFocus事件,Validate事件,OLECompleteDrag事件(ActiveX控件),OLEDragDrop事件(ActiveX控件),OLEDragOver事件(ActiveX控件),OLEGiveFeedBack事件(ActiveX控件),OLESetData事件(ActiveX控件),OLEStartDrag事件(ActiveX控件),Change事件(ActiveX控件),Click事件(ActiveX控件),DblClick事件(ActiveX控件),KeyDown、KeyUp事件(ActiveX控件),KeyPress事件(ActiveX控件)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:08 | 显示全部楼层
3 ImageCombo控件的使用
3.1 可能的用途
使用ImageCombo控件,可以创建与Windows资源管理器风格相似的界面或创建类似于一般“打开文件”和“保存文件”对话框的自定义对话框。也可以创建使用不同的图片和/或缩进的列表,以表示基于某些外部条件的列表项状态,例如窗体上其他控件的状态。还可以在下拉列表格式中向用户提供层次结构信息、为标准的下拉列表添加视觉上的优化或指示器、显示具有标准外观的复合框等。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
3.2 ImageCombo控件的应用及示例
(1)向ImageCombo控件中添加项目
如果要向ImageCombo控件中添加新的项目,需要使用Add方法在其ComboItems集合中创建一个新的ComboItem对象。可以为Add方法提供可选的参数来指定新项目的各种属性,其中包括Index和Key值、使用的任何图片以及将要具有的缩进层次。Add方法返回对新创建的ComboItem对象的引用。
[示例一] 在VBE编辑器中插入一个用户窗体,并在该窗体上放置一个ImageCombo控件和一个命令按钮控件,如图4所示。
  图4:在窗体上放置两个控件
然后,在用户窗体代码窗口中输入下面的代码:
Private Sub CommandButton1_Click()
  Dim objNewItem As ComboItem
  '新除图像复合框控件中的项目
  ImageCombo1.ComboItems.Clear
  '添加项目
  Set objNewItem = ImageCombo1.ComboItems.Add(Key:="Sign1", Text:="Mouse")
  '设置提示文字
  ImageCombo1.ControlTipText = "卡通小老鼠"
End Sub
按F5键运行,单击“添加项目”按钮,结果如图5所示。
 图5:添加项目后的结果

[此贴子已经被作者于2007-4-20 22:18:43编辑过]
W6nlMNcg.jpg
xxlZjwRb.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-20 22:10 | 显示全部楼层
[示例二] 重新建一个窗体,在其上放置一个ImageCombo控件和一个命令按钮控件,如图4所示。然后,在用户窗体代码窗口中输入下面的代码:
Private Sub CommandButton1_Click()
  Dim objNewItem As ComboItem
  '添加项目
  Set objNewItem = ImageCombo1.ComboItems.Add(Key:="Sign", Text:="Cat")
  Set objNewItem = ImageCombo1.ComboItems.Add _
(Key:="Sign1", Text:="Cat1", Indentation:=1)
  Set objNewItem = ImageCombo1.ComboItems.Add _
(Key:="Sign2", Text:="Cat2", Indentation:=1)
End Sub
按F5键运行,单击“添加项目”按钮,此时,代码将在ImageCombo控件中添加三个项目,且设置了缩进,如图6所示。
  图6:添加项目后的结果
注:复合框列表的信息通常按层次结构来组织。为了实现这种显示,每一个ComboItem对象有一个特定的缩进层次,由其Indentation属性值决定。每一个缩进层次代表从列表边缘开始的10个像素宽,所以Indentation值为1的ComboItem将从Indentation为0的 ComboItem开始缩进10个像素。
[此贴子已经被作者于2007-4-20 22:19:40编辑过]
qbz09iEZ.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 14:51 , Processed in 0.038069 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表