虎鞭带倒刺怎么交配:第20章 使用ActiveX控件

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 15:44:22
 第20章 使用ActiveX控件   使用标准控件可设计出大多数的用户界面,但对一些特定的需求仍很难满足。这时可使用其他程序设计语言构台非标准ActiveX控件来弥补标准控件的不足。  20.1 添加ActiveX控件  使用ActiveX控件之前,需要先将ActiveX控件的图标添加到工具箱中。在工具箱中加入ActiveX控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。使用ActiveX控件的方法与使用其他标准控件的方法完全一样。ActiveX控件保留了其他标准控件的一些常用属性、方法和事件,它们的作用也相同,这样就保证了VBA程序的基本能力。下面以“ImageList控件”为例演示将ActiveX控件添加到工具箱中的方法。  步骤1 在Excel中组合键“Alt+F11”切换到VBE环境中。  步骤2 选择菜单中的“插入”“用户窗体”命令,插入一个用户窗体,同时显示出工具箱。  步骤3 在“工具箱”的空白位置单击鼠标右键,将弹出如图20-1所示的菜单。  步骤4 单击弹出菜单中的“附加控件”项,打开如图20-2所示“附加控件”对话框。         步骤5 在“可用控件”列表框中找到“Microsoft ImageList Control6.0”选项,并单击其前面的复选框,确认其为被选中状态,如图20-3所示。  步骤6 单击“确定”按钮后,工具箱中将新增加“ImageList控件”,如图20-4所示。        步骤7 将ActiveX控件添加到工具箱中以后,可以使用与标准控件一样的方法,向窗体中添加该图像列表控件。  注意:使用ActiveX控件之前,要保证该控件已安装在计算机中,如前面添加的ImageList控件是在MSCOMCTL.OCX文件中定义的,必须将该文件复制到Windows的system32文件夹中,程序才能正常运行。  20.2 使用图像列表控件  图像列表控件(ImageList)像是图像的储藏室,可用来保存窗体中要用到的图像。在程序运行时ImageList控件是隐藏的,其他控件可通过索引调用ImageList控件中保存的图像。  20.2.1 ImageList的构成  ImageList控件包含在MSCOMCTL.OCX文件中,使用之前必须先将其附加到工具箱中,如上一节所示。  ImageList控件包含一个ListImages集合,该集合由ListImage对象构成。ListImage对象是任意大小的图片,可以被其他控件使用。图片可以是位图(.bmp)、光标(.cur)、图标(.ico)、JPEG(.jpg)或(.gif)文件。  ImageList控件中储存的图像可以被其他控件使用,特别是ListView,TreeView和TabStrip控件。如果某个控件将Picture对象分配给它的Picture属性,那么这样的控件就可以和ImageList控件一起使用,例如Image控件、按钮控件及单选按钮控件等。   用ImageList控件存储图像可以节约程序的开发时间,因为这样可以使编写的代码引用单一和一致的图像目录。不用在每次显示图片时都使用LoadPcture函数从磁盘上装载图片,只需要使用一次LoadPicture图片填充到ImageList控件,并分配其引用句Key值,在后续的代码中就可以根据Key或Index属性引用ImageList控件中存储的图像。  20.2.2 ImageList属性和方法  从如图20-5所示的对象浏览器中可以看出,作为图像的存储控件,ImageList控件的成员很少,主要有以下几个。                    1. ImageHeight属性  ImageHeight属性返回或设置图像列表控件中ListImage对象(图片)的高度。  2. ImageWidth属性  ImageWidth属性返回或设置图像列表控件中ListImage对象(图片)的宽度。  3. ListImages属性  返回对图像列表控件中ListImage对象集合的引用。  可以用标准的集合方法(如Add和Clear方法)来操作ListImage对象。集合中的每一个成员都是可以通过其索引或唯一关键字来访问。当把ListImage对象添加到一个集合中时,这些索引或唯一关键字被分别存储在Index和Key属性中。  4. Overlay方法  使用Overlay方法可以创建组合图像,该是组合图像从一个ListImages集合绘制一幅图像,叠加在另一幅上面。其语法为:  object.Overlay (index1, index2)  其中,参数的含义如下。  ●index1:一个整数(ListImages集合对象的Index属性)或唯一的字符串(ListImages集合对象的Key属性),它指定了将被叠加的图像。  ●index2:它指定了将被绘制到由index1指定对象上的图像。  20.2.3 添加图像到ImageList控件  有两种方法将图像添加到ImageList控件中,一种是在程序中编写代码,使用ListImages集合对象的Add方法将图像添加到该集合中,其操作方法与其他集合对象相同;另一种是使用可视的方法,在设计阶段将图像载入控件中。具体操作步骤如下。  步骤1 在如图20-6所示的ImageList控件的“属性”窗口中单击“(自定义)”项后的按钮,打开“属性项”,如图20-7所示。  步骤2 在“General”选项卡中可设置图像的大小等参数。    步骤3 单击“Images”选项卡,打开如图20-8所示对话框。  步骤4 单击下方的“InsertPicture”按钮,打开“SelectPicture”对话框,选择需要添加到ImageList控件的ListImages集合中的图像(可一次选中多个图像文件),再单击“打开”按钮即可。      20.2.4 改进的红绿灯窗体  在上一章用Image控件做了一个红绿灯程序,为了显示三种状态,使用了三个Image控件。如果使用ImageList控件作为容器,则放置三种状态的图片,然后使用一个Image控件分别显示即可,具体制作步骤如下。  步骤1 在VBE环境中选择菜单中的“插入”“用户窗体”命令插入一个窗体。  步骤2 向工具箱中添加ImageList控件。  步骤3 向窗体中添加两个按钮控件、一个图像控件、一个ImageList控件,其参数设置参照19章的例子,ImageList控件在运行时不会显示,可将其随意放置在窗体中,如图20-10所示。                                                        在窗体初始化时,将信号灯三种状态的图片都添加到ImageList控件中,并设置好Key属性供后续程序调用。设置完ImageList控件中的图片后,在图像控件中显示红灯状态,并设置标志变量isignal的值。  步骤6 给“切换信号”按钮编写代码如下:  Private Sub cmdSwitch_Click()
   iSignal = iSignal Mod 3
   Select Case iSignal
   Case 0
       img1.Picture = ImageList1.ListImages("red").Picture
       iSignal = iSignal + 1
    Case 1
       img1.Picture = ImageList1.ListImages("yellow").Picture
       iSignal = iSignal + 1
    Case 2
        img1.Picture = ImageList1.ListImages("green").Picture
       iSignal = iSignal + 1
    End Select
End Sub
  程序中根据标志变量iSignal的值来决定应该显示哪张图片,显示完成后标志变量加1.在本例中只使用了一个图像控件,通过更换图像控件中的Picture属性值来达到改变显示效果的目的。  20.3 使用树形视图控件  TreeView控件可以用来显示具有层次结构的数据,例如组织树、索引项、磁盘中的文件和目录等。如同Windows资源管理器中显示的文件和文件夹一样,该控件可以逐级向下显示,也可将下级项目折叠起来。TreeView控件中的各项信息都有一个与之相关联的Node对象。  20.3.1 TreeView的构成