Visual Basic的新增特性中,ActiveX控件是很重要的一部分。ActiveX控件通常用于针对网络的设计,所以也被称为网络控件。利用ActiveX控件,不但可以在各个应用程序之间建立一种标准的通信机制,而且通过ActiveX控件制作的ActiveX文档可以在Internet上发布。
从本质上说前面几章中介绍的CommandButton控件、TextBox和Timer等控件都是ActiveX控件,在本章中所指的ActiveX控件主要是用户自己定制的ActiveX控件,同时还要向用户介绍ActiveX控件在网络上应用——ActiveX文档和网络浏览器的制作等。
在本节中将向用户介绍如何在Visual Basic 中定制一个符合自己需要的ActiveX控件,示例Activex控件可以把普通的CommandButton控件和Timer控件结合起来,即可以在程序运行的过程中通过设置ActiveX控件的Interval属性来激活计时器事件,具体的程序设计步骤如下所示。
首先启动一个新的Visual Basic项目,在弹出的“新建工程”对话框中选择“标准EXE”选项,如图8-1所示。

图8-1 “新建工程”对话框
在“新建工程”对话框中选择“ActiveX控件”选项,单击“确定”按钮,在Visual Basic 就新建了一个ActiveX控件的工程文件,同时打开了一个空白的窗体,新建的ActiveX控件工程窗体如图8-2所示。

图8-2 新建的ActiveX控件工程窗体
窗体的属性设置如表8-1所示:
表8-1 窗体的属性设置
|
属性名 |
属性值 |
|
名称 |
UserControl1 |
|
ClientHeight |
510 |
|
ClientLeft |
0 |
|
ClientTop |
0 |
|
ClientWidth |
1950 |
|
ScaleHeight |
510 |
|
ScaleWidth |
1950 |
向空白的窗体上添加一个Timer控件和一个CommandButton控件,其中CommandButton控件用来接受ActiveX控件的各种操作(如鼠标、键盘等),而Timer控件则用来帮助ActiveX控件产生计时器事件,两个控件的属性设置如下代码所示。
Begin Visual Basic .Timer Timer1
Interval = 500
Left = 1440
Top = 0
End
Begin Visual Basic .CommandButton Command1
Caption = "Command1"
Height = 495
Left = 0
Style = 1
TabIndex = 0
Top = 0
Width = 1935
End
添加CommandButton控件和Timer控件后的窗体如图8-3所示。

图8-3 添加CommandButton控件和Timer控件后的窗体
在ActiveX控件设计的过程中,用鼠标左键双击窗体上的空白处,在弹出的代码窗口中把光标移动到事件Private Sub UserControl_Initialize()的处理过程中,并且添加如下所示的ActiveX控件初始化代码。
Private Sub UserControl_Initialize()
UserControl.Command1.Enabled = True
UserControl.Timer1.Enabled = True
'设置控件有效状态
UserControl.Command1.Caption = Year(Date) & ":" & Month(Date) & ":" & Day(Date)
'显示当前日期
UserControl.Command1.Left = 0
UserControl.Command1.Top = 0
'初始化控件位置
UserControl.Command1.Width = UserControl.Width
UserControl.Command1.Height = UserControl.Height
'初始化控件大小
End Sub
提示:
@ 在ActiveX控件加载的初期,窗体Private Sub UserControl_Initialize()事件中的代码就会被执行。
程序首先通过UserControl.Command1.Enabled = True和UserControl.Timer1.Enabled= True语句设置ActiveX控件中的两个子控件的有效状态,然后设置了CommandButton控件的显示文本为系统当前的日期,最后通过四条语句对ActiveX控件的大小和位置进行了设置。
经过以上初始化后的ActiveX控件测试结果如图8-4所示。

图8-4 初始化设置后的ActiveX控件
注意:
@ 在ActiveX控件的设计过程中,值得注意的一点就是要对控件的尺寸改变做出正确的判断和处理,由于ActiveX控件的设计都是依赖于一定的窗体(本示例程序中为UserControl窗体)。
所以要在窗体的Private Sub UserControl_Resize()事件中添加对控件尺寸改变的响应代码(本程序中的响应代码如下所示)。
Private Sub UserControl_Resize()
UserControl.Command1.Left = 0
UserControl.Command1.Top = 0
'设置控件位置
UserControl.Command1.Width = UserControl.Width
UserControl.Command1.Height = UserControl.Height
'设置控件大小
End Sub
程序说明:
在ActiveX控件运行的过程中,如果ActiveX控件所在窗体的尺寸发生改变,就会激活Private Sub UserControl_Resize()事件,然后程序通过语句UserControl.Command1.Left=0、UserControl.Command1.Top=0来设置ActiveX控件的位置,之后再通过两条语句:
UserControl.Command1.Width=UserControl.Width
UserControl.Command1.Height=UserControl.Height
来设置ActiveX控件大小,这样,ActiveX就能够实现跟踪尺寸改变的功能了。
另外为了能够在程序运行的过程中ActiveX控件能够自动的判断自身可见状态,需要添加如下所示代码。
Private Sub UserControl_Show()
MsgBox "ActiveX控件处于可见状态"
End Sub
Private Sub UserControl_Hide()
MsgBox "ActiveX控件处于不可见状态"
End Sub
以上进行的工作是手动的,下面利用Visual Basic 6提供的Visual Basic ActiveX控件界面向导程序来生成基本的ActiveX外壳(如属性、事件和方法等)。
用鼠标选择菜单“工程”中的“添加用户控件”选项,就会弹出一个如图8-5所示的“添加用户控件”对话框。

图8-5 “添加用户控件”对话框
在“添加用户控件”对话框中选择“Visual Basic ActiveX控件界面向导”选项,单击“打开”按钮就会激活Visual Basic 6的ActiveX控件界面向导,并且弹出一个如图8-6所示的“ActiveX控件接口向导-介绍”对话框。