在 Combo1控件里可以使用 Combo1.ListIndex = 1指定列表控返回一个,索引值.但在ImageCombo控件如何实现,返回指定一个索引值呢??

解决方案 »

  1.   

    希望对你有帮助
    使用 ImageCombo 控件
    ImageCombo 控件类似于标准 Windows 组合框控件,但同时有一些重要的区别。最明显的区别就是在组合框的列表部分可以为每一项加入图片。通过使用图像,用户可以更容易地在可能的选择中标识并选中选项。另一个不很明显但同样重要的区别是 ImageCombo 管理控件列表部分的方式。列表中的每一项是一个 ComboItem 对象,而列表本身则是这些对象的 ComboItems 集合。这样,列表的管理就变得简单化了,使单独或一起访问各项目变得更加简单,分配或更改那些决定项目内容和形式的属性也很方便。这种结构同时还使处理列表项所带的图片更加方便。由于列表中的各个项目是集合中的对象,标准组合框控件中的某些属性就不再需要了(例如 List、ListIndex 和 ItemData)。因此,ImageCombo 控件中就不再提供这些属性了。ImageCombo 列表中的每一项可以有三个与之相关联的图片。第一个图片,由Image 属性指定,出现在控件下拉部分中,列表项文字的旁边。当在列表中选定SelImage 属性时,则SelImage属性指定列表项的图片。SelImage 图片出现在组合框编辑部分的旁边,和在列表部分中一样。OverlayImage 属性提供了在主图片上叠放其它图片的方式,例如表示有特殊兴趣的复选标记,或者表示该项无效的X。要管理用于列表项的这些图片,ImageCombo 使用了 ImageList 公用控件。通过索引或引用存储在 ImageList 控件中图片的关键值将图片分配给 ImageCombo 中的项。ImageCombo 控件也支持多级缩进。缩进的数目是单个列表项的属性,所以即使列表被重新排序,列表项仍然保持它们的缩进层次。显示有不同的缩进层次可以突出列表的某些部分或显示层次结构关系。可能的用途
    创建 Windows 资源管理器风格的界面或创建类似于一般“打开文件”和“保存文件”对话框的自定义对话框。
    创建使用不同的图片和/或缩进的列表,以表示基于某些外部条件的列表项状态,例如窗体上其他控件的状态。
    在下拉列表格式中向用户提供层次结构信息。
    为标准的下拉列表添加视觉上的优化或指示器。
    显示具有标准外观的组合框,该外观在代码中使用了高级的面向对象的属性、方法和结构。 
    向 ImageCombo 中添加项目
    如果要向 ImageCombo 添加新的项目,需要使用 Add 方法在其 ComboItems 集合中创建一个新的 ComboItem 对象。可以为Add 方法提供可选的参数来指定新项目的各种属性,其中包括 Index 和 Key 值、使用的任何图片以及将要具有的缩进层次。Add 方法返回对新创建的 ComboItem 对象的引用。下面的代码将一个叫做“Signal1”的项目加入 ImageCombo 列表的最上端,如同提供的 Index 值所指定的1那样。新项目在控件中显示为“交通”,如同在对象的 Text 属性指定的那样。代码得到由 Add 方法返回的对新项目的引用,并用该引用来更改项目的 ToolTip 文本。Dim objNewItem As ComboItem   Set objNewItem = ImageCombo1.ComboItems.Add(1, _
       "Signal1", "Traffic")   objNewItem.ToolTipText = "Traffic Light"
    使用带有 ImageCombo 列表项的图片
    列表项的图像由与 ImageCombo控件相关联的 ImageList 控件提供。有关同其他控件一起使用 ImageList 控件的详细信息,请参阅“使用 ImageList 控件”。要在运行时将 ImageList 控件与 ImageCombo 控件相关联,请按照以下步骤执行: 用将要在 ImageCombo 控件中使用的图片充填 ImageList 控件。
    单击右键 ImageCombo 控件,单击“属性”打开“属性页”对话框。
    在“通用”选项卡上,单击“ImageList”框选择已经充填过的ImageList 控件。 
    要在运行时把 ImageList 控件和 ImageCombo 控件相关联,只需要简单地将 ImageList 属性设置为 ImageList 控件的名称,如下例所示:Private Sub Form_Load()
       Set ImageCombo1.ImageList = ImageList1
    End Sub
    设置一项的图片
    要指定在 ImageCombo 控件中列表项旁边出现的图片,可以将 ComboItem 对象的 Image 属性设置为 ImageList 控件中某图片的 Index 或 Key 值。例如,如果 ImageList 控件中第一幅图片的 Key 值被设置为“红灯”,那么下面两行代码完成的是同样的事情:ImageCombo1.ComboItems("Signal1").Image = 1
    ImageCombo1.ComboItems("Signal1").Image = "Stoplight"另外一种办法是可以在创建 ComboItem 时指定与其关联的图像。只需要简单地将正确图像的 Key 或 Index 属性指定为 Add 方法的一个参数,例如:ImageCombo1.ComboItems.Add(1, "Signal1", "Traffic", _
    "Stoplight")
    选中的项目图像
    当从列表中选择一个项目时,ComboItem 的 SelImage 属性所指定的图像将出现在组合框编辑部分中项目的旁边。下一次下拉组合框时,SelImage 图片会出现在列表中该项目的旁边。如果 ImageList 控件包含了一个 Key 值为“绿灯”的图片,可以通过下面的代码将这个图片作为列表项的选定图片使用:ImageCombo1.ComboItems("Signal1").SelImage = _
    "Greenlight"也可以在向列表中添加新项目时,指定该图片作为选定图像使用。可以将该图片的 Key 或 Index 值作为参数传递给 Add 方法:ImageCombo1.ComboItems.Add(1, "Signal1", "Traffic", _
    "Stoplight", "Greenlight")
    指定覆盖图片
    可以使用覆盖图片来表示 ComboItem 的状态,或标识它以引起特别的注意。可以通过使用 ComboItem 的 OverlayImage 属性指定覆盖图片。如果要将 ImageList 控件中 Key 值为“Check”的图片作为覆盖图片使用,可以使用下面的代码:ImageCombo1.ComboItems("Signal1").OverlayImage = _
    "Check"
    要在创建组合框项目时指定覆盖图片,可以将该图片的 Index 或 Key 值作为参数传递给 Add 方法:ImageCombo1.ComboItems.Add(1, "Signal1", "Traffic", _
    "Stoplight", "Greenlight", "Check")
    改变列表项的缩进
    组合框列表的信息通常按层次结构来组织。为了实现这种显示,每一个 ComboItem 对象有一个特定的缩进层次,由其 Indentation 属性值决定。每一个缩进层次代表从列表边缘开始的10个像素宽,所以 Indentation 值为3 的 ComboItem 将从 Indentation 为 0的 ComboItem 开始缩进30个像素。如果要设置列表中所有项目的缺省缩进值,可以在设计时使用属性工作表或者通过代码来设置 ImageCombo 控件的 Indentation 属性值。要设置 ComboItems 缺省缩进值,请 从“属性页”中选择 Indentation 属性并将其值改为大于0 的整数。每个缩进层次代表十个像素。 
    要通过代码设置 ComboItem的缺省缩进值,请使用下面的代码:ImageCombo1.Indentation = 1设置个别 ComboItem 对象的缩进值如果要设置具体某个列表项的缩进值,则需要设置该 ComboItem 对象的 Indentation,同时还需要指定 Key 或 Index 值来确定该对象。例如,下面的代码在列表中每三个项目缩进20个像素:For Each ComboItem In ImageCombo1.ComboItems
       If (ComboItem.Index / 3) = _
       (Int(ComboItem.Index / 3)) Then
          ComboItem.Indentation = 2
       End If
    Next ComboItem下面的代码将 Key 值为“RightOn”的项目缩进40个像素:ImageCombo1.ComboItems("RightOn").Indentation = 4
      

  2.   

    ImageCombo 控件类似于标准 Windows 组合框控件,但同时有一些重要的区别。最明显的区别就是在组合框的列表部分可以为每一项加入图片。通过使用图像,用户可以更容易地在可能的选择中标识并选中选项。另一个不很明显但同样重要的区别是 ImageCombo 管理控件列表部分的方式。列表中的每一项是一个 ComboItem 对象,而列表本身则是这些对象的 ComboItems 集合。这样,列表的管理就变得简单化了,使单独或一起访问各项目变得更加简单,分配或更改那些决定项目内容和形式的属性也很方便。这种结构同时还使处理列表项所带的图片更加方便。由于列表中的各个项目是集合中的对象,标准组合框控件中的某些属性就不再需要了(例如 List、ListIndex 和 ItemData)。因此,ImageCombo 控件中就不再提供这些属性了。ImageCombo 列表中的每一项可以有三个与之相关联的图片。第一个图片,由Image 属性指定,出现在控件下拉部分中,列表项文字的旁边。当在列表中选定SelImage 属性时,则SelImage属性指定列表项的图片。SelImage 图片出现在组合框编辑部分的旁边,和在列表部分中一样。OverlayImage 属性提供了在主图片上叠放其它图片的方式,例如表示有特殊兴趣的复选标记,或者表示该项无效的X。要管理用于列表项的这些图片,ImageCombo 使用了 ImageList 公用控件。通过索引或引用存储在 ImageList 控件中图片的关键值将图片分配给 ImageCombo 中的项。ImageCombo 控件也支持多级缩进。缩进的数目是单个列表项的属性,所以即使列表被重新排序,列表项仍然保持它们的缩进层次。显示有不同的缩进层次可以突出列表的某些部分或显示层次结构关系。可能的用途
    创建 Windows 资源管理器风格的界面或创建类似于一般“打开文件”和“保存文件”对话框的自定义对话框。
    创建使用不同的图片和/或缩进的列表,以表示基于某些外部条件的列表项状态,例如窗体上其他控件的状态。
    在下拉列表格式中向用户提供层次结构信息。
    为标准的下拉列表添加视觉上的优化或指示器。
    显示具有标准外观的组合框,该外观在代码中使用了高级的面向对象的属性、方法和结构。 
    向 ImageCombo 中添加项目
    如果要向 ImageCombo 添加新的项目,需要使用 Add 方法在其 ComboItems 集合中创建一个新的 ComboItem 对象。可以为Add 方法提供可选的参数来指定新项目的各种属性,其中包括 Index 和 Key 值、使用的任何图片以及将要具有的缩进层次。Add 方法返回对新创建的 ComboItem 对象的引用。下面的代码将一个叫做“Signal1”的项目加入 ImageCombo 列表的最上端,如同提供的 Index 值所指定的1那样。新项目在控件中显示为“交通”,如同在对象的 Text 属性指定的那样。代码得到由 Add 方法返回的对新项目的引用,并用该引用来更改项目的 ToolTip 文本。Dim objNewItem As ComboItem   Set objNewItem = ImageCombo1.ComboItems.Add(1, _
       "Signal1", "Traffic")   objNewItem.ToolTipText = "Traffic Light"
    使用带有 ImageCombo 列表项的图片
    列表项的图像由与 ImageCombo控件相关联的 ImageList 控件提供。有关同其他控件一起使用 ImageList 控件的详细信息,请参阅“使用 ImageList 控件”。要在运行时将 ImageList 控件与 ImageCombo 控件相关联,请按照以下步骤执行: 用将要在 ImageCombo 控件中使用的图片充填 ImageList 控件。
    单击右键 ImageCombo 控件,单击“属性”打开“属性页”对话框。
    在“通用”选项卡上,单击“ImageList”框选择已经充填过的ImageList 控件。 
    要在运行时把 ImageList 控件和 ImageCombo 控件相关联,只需要简单地将 ImageList 属性设置为 ImageList 控件的名称,如下例所示:Private Sub Form_Load()
       Set ImageCombo1.ImageList = ImageList1
    End Sub
    设置一项的图片
    要指定在 ImageCombo 控件中列表项旁边出现的图片,可以将 ComboItem 对象的 Image 属性设置为 ImageList 控件中某图片的 Index 或 Key 值。例如,如果 ImageList 控件中第一幅图片的 Key 值被设置为“红灯”,那么下面两行代码完成的是同样的事情:ImageCombo1.ComboItems("Signal1").Image = 1
    ImageCombo1.ComboItems("Signal1").Image = "Stoplight"另外一种办法是可以在创建 ComboItem 时指定与其关联的图像。只需要简单地将正确图像的 Key 或 Index 属性指定为 Add 方法的一个参数,例如:ImageCombo1.ComboItems.Add(1, "Signal1", "Traffic", _
    "Stoplight")
    选中的项目图像
    当从列表中选择一个项目时,ComboItem 的 SelImage 属性所指定的图像将出现在组合框编辑部分中项目的旁边。下一次下拉组合框时,SelImage 图片会出现在列表中该项目的旁边。如果 ImageList 控件包含了一个 Key 值为“绿灯”的图片,可以通过下面的代码将这个图片作为列表项的选定图片使用:ImageCombo1.ComboItems("Signal1").SelImage = _
    "Greenlight"也可以在向列表中添加新项目时,指定该图片作为选定图像使用。可以将该图片的 Key 或 Index 值作为参数传递给 Add 方法:ImageCombo1.ComboItems.Add(1, "Signal1", "Traffic", _
    "Stoplight", "Greenlight")
    指定覆盖图片
    可以使用覆盖图片来表示 ComboItem 的状态,或标识它以引起特别的注意。可以通过使用 ComboItem 的 OverlayImage 属性指定覆盖图片。如果要将 ImageList 控件中 Key 值为“Check”的图片作为覆盖图片使用,可以使用下面的代码:ImageCombo1.ComboItems("Signal1").OverlayImage = _
    "Check"
    要在创建组合框项目时指定覆盖图片,可以将该图片的 Index 或 Key 值作为参数传递给 Add 方法:ImageCombo1.ComboItems.Add(1, "Signal1", "Traffic", _
    "Stoplight", "Greenlight", "Check")
    改变列表项的缩进
    组合框列表的信息通常按层次结构来组织。为了实现这种显示,每一个 ComboItem 对象有一个特定的缩进层次,由其 Indentation 属性值决定。每一个缩进层次代表从列表边缘开始的10个像素宽,所以 Indentation 值为3 的 ComboItem 将从 Indentation 为 0的 ComboItem 开始缩进30个像素。如果要设置列表中所有项目的缺省缩进值,可以在设计时使用属性工作表或者通过代码来设置 ImageCombo 控件的 Indentation 属性值。要设置 ComboItems 缺省缩进值,请 从“属性页”中选择 Indentation 属性并将其值改为大于0 的整数。每个缩进层次代表十个像素。 
    要通过代码设置 ComboItem的缺省缩进值,请使用下面的代码:ImageCombo1.Indentation = 1设置个别 ComboItem 对象的缩进值如果要设置具体某个列表项的缩进值,则需要设置该 ComboItem 对象的 Indentation,同时还需要指定 Key 或 Index 值来确定该对象。例如,下面的代码在列表中每三个项目缩进20个像素:For Each ComboItem In ImageCombo1.ComboItems
       If (ComboItem.Index / 3) = _
       (Int(ComboItem.Index / 3)) Then
          ComboItem.Indentation = 2
       End If
    Next ComboItem下面的代码将 Key 值为“RightOn”的项目缩进40个像素:ImageCombo1.ComboItems("RightOn").Indentation = 4
      

  3.   

    ImageList说明ImageList 控件的作用象图像的储藏室,同时,它需要第二个控件显示所储存的图像。第二个控件可以是任何能显示图像 Picture 对象的控件,也可以是特别设计的、用于绑定 ImageList 控件的 Windows 通用控件之一。这些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控件。为了与这些控件一同使用 ImageList,必须通过一个适当的属性将特定的 ImageList控件绑定到第二个控件。对于 ListView 控件,必须设置其 Icons 和 SmallIcons 属性为 ImageList 控件。对于 TreeView、TabStrip、ImageCombo、和 Toolbar 控件,必须设置 ImageList 属性为 ImageList 控件。在设计时,可以用“ImageList 控件属性”对话框的“图像”选项卡来添加图象。在运行时,可以用 Add 方法给 ListImages 集合添加图象。对于 Windows 通用控件来说,设计时可以用“自定义属性”对话框来指定一个 ImageList。运行时也可以用 ImageList 属性指定一个 ImageList 控件,就象下面的例子所述的那样,它可以设置 TreeView 控件的:TreeView1.ImageList = ImageList1  '指定 ImageList 属性
    重点   当与 Windows 通用控件一起使用 ImageList 控件时,在将它绑定到第二个控件之前,按照您希望的顺序将全部需要的图像插入到 ImageList。一旦 ImageList 被绑定到第二个控件 ,您就不能再删除图像了,并且也不能将图像插入到 ListImages 集合中间。但是您可以在集合的末尾添加图像。一旦 ImageList 与某个 Windows 通用控件相关联,就可以在过程中用 Index 属性或 Key 属性的值来引用 ListImage 对象了。下面的示例设置 TreeView 控件的第三个 Node 对象的 Image 属性为 ImageList 控件中的第一个 ListImage 对象:'使用 ImageList1 的 Index 属性值。
    TreeView1.Nodes(3).Image = 1
    '或者使用 Key 属性值。
    TreeView1.Nodes(3).Image = "image 1"   '假定 Key 值为 "image 1。"要与其它控件(不能绑定到 ImageList 控件的控件)一起使用 ImageList 控件,将第二个控件的 Picture属性赋值给 ImageList 控件中的任何一个图像的 Picture对象。例如,下面的代码把 ListImages 集合中的第一个 ListImage 对象的 Picture 对象赋值给一个新创建的 StatusBar 面板的 Picture 属性:Dim pnlX As Panel
    Set pnlX = StatusBar1.Panels.Add() '添加一个 Panel 对象。
    Set pnlX.Picture = ImageList1.ListImages(1).Picture '设置图片。注意   将图像赋值给 Picture 对象时,必须使用 Set 语句。可以插入任何大小的图像到 ImageList 控件中。然而,由第二个控件显示的图像大小是由一个因素决定的:第二个控件是否也是一个绑定到 ImageList 控件的 Windows 通用控件。当 ImageList 控件被绑定到另一个 Windows 通用控件时,不同大小的图片可以被添加到控件中,但是在关联的 Windows 通用控件中显示的图象大小将受到添加到 ImageList 图像中的第一个图象大小的约束。例如,如果您添加一个 16 × 16像素的图像到 ImageList 控件中,然后将 ImageList 绑定到 TreeView 控件(用 Node 对象显示),所有存储于 ImageList 控件中的图像将以 16 × 16像素显示,即使它们的尺寸是更大或更小。此外,如果您用 Picture 对象显示图像,则存储在 ImageList 控件中的任何图像都将以图像最初的大小显示,无论它的尺寸是更大还是更小。
    发行注意   ImageList 控件是 ActiveX 控件组的一部分,该控件组可以在文件 MSCOMCTL.OCX 中找到。若是在应用程序中使用 ImageList 控件,必须把文件 MSCOMCTL.OCX 添加到工程中。在分行应用程序时,应把文件 MSCOMCTL.OCX 安装到 Microsoft Windows 的 System 目录或者 System32 目录下。关于如何把一个 ActiveX 控件添加到工程中去的详细内容,请参阅《程序员指南》。