第二卷 ActiveX控件與網絡應用(1)(1 / 3)

第二卷 ActiveX控件與網絡應用

Visual Basic的新增特性中,ActiveX控件是很重要的一部分。ActiveX控件通常用於針對網絡的設計,所以也被稱為網絡控件。利用ActiveX控件,不但可以在各個應用程序之間建立一種標準的通信機製,而且通過ActiveX控件製作的ActiveX文檔可以在Internet上發布。

從本質上說前麵幾章中介紹的CommandButton控件、TextBox和Timer等控件都是ActiveX控件,在本章中所指的ActiveX控件主要是用戶自己定製的ActiveX控件,同時還要向用戶介紹ActiveX控件在網絡上應用--ActiveX文檔和網絡瀏覽器的製作等。

第一章 定製ActiveX控件

在本節中將向用戶介紹如何在Visual Basic 中定製一個符合自己需要的ActiveX控件,示例Activex控件可以把普通的CommandButton控件和Timer控件結合起來,即可以在程序運行的過程中通過設置ActiveX控件的Interval屬性來激活計時器事件,具體的程序設計步驟如下所示。

1.開始工作

首先啟動一個新的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

2.添加控件

向空白的窗體上添加一個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控件後的窗體

3.添加代碼

在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

4.設計ActiveX控件

以上進行的工作是手動的,下麵利用Visual Basic 6提供的Visual Basic ActiveX控件界麵向導程序來生成基本的ActiveX外殼(如屬性、事件和方法等)。

用鼠標選擇菜單"工程"中的"添加用戶控件"選項,就會彈出一個如圖8-5所示的"添加用戶控件"對話框。

圖8-5 "添加用戶控件"對話框

在"添加用戶控件"對話框中選擇"Visual Basic ActiveX控件界麵向導"選項,單擊"打開"按鈕就會激活Visual Basic 6的ActiveX控件界麵向導,並且彈出一個如圖8-6所示的"ActiveX控件接口向導-介紹"對話框。

圖8-6 "ActiveX控件接口向導-介紹"對話框

"ActiveX控件接口向導-介紹"對話框中是ActiveX控件界麵向導程序的的說明部分,用戶可以通過複選"以後跳過本屏幕"選項來跳過這個窗口,並且向導程序以後都不會顯示這個對話框。單擊"下一步"按鈕按鈕,進入ActiveX控件界麵向導程序的第二個窗口,如圖8-7所示。

圖8-7 "選定接口成員"對話框

"選定接口成員"對話框列舉了在定製ActiveX控件中可能會用到的屬性、事件和方法,用戶可以在其中選擇定製ActiveX控件的屬性,方法和事件。左邊的"可用名稱"列表框中列舉了可以放入定製控件的標準屬性,方法和事件,右邊的"選定名稱"列表框中列舉了選定的定製控件的標準屬性,方法和事件。

提示:

* 用戶可以通過"選定接口成員"對話框中的四個按鈕來完成常用屬性、事件和方法的添加和刪除操作。

在本示例程序中,在"可用名稱"列表框中選擇Caption選項、Interval選項、Picture選項、Timer選項和Style選項,單擊"下一步"按鈕進入下一步,顯示的"創建自定義接口成員"對話框如圖8-8所示。

圖8-8 "創建自定義接口成員"對話框

在"創建自定義接口成員"對話框中用戶可以為ActiveX控件添加自己的屬性、方法和事件。

通過單擊"新建"按鈕,就會彈出如圖8-9所示的"添加自定義成員"對話框,用戶可以在"名稱"輸入框中輸入自定義成員的名字,在"類型"中選擇自定義成員的類型,如屬性、方法和事件。

圖8-9 "添加自定義成員"對話框

在本示例程序中由於不會涉及到自定義屬性、方法和事件,所以在"創建自定義接口成員"對話框中直接單擊"下一步"按鈕進入下一步。如圖8-10所示。

圖8-10 "設置映射"對話框

在"設置映射"對話框中用戶可以把定製ActiveX控件的屬性、方法和事件映射到Visual Basic 中已經存在的ActiveX控件的屬性、方法和事件上。

從左邊的"公有名稱"列表框中選擇一個或多個屬性、方法或事件,然後在"控件"列表框中選擇對應容器控件,在"成員"列表框中選擇對應的接口成員即可。

例如在本示例程序中要把ActiveX控件的Timer屬性映射到Timer控件的Timer成員上。

結束映射後,單擊"下一步"按鈕進入下一個窗口。如圖8-11所示。

在"設置屬性"對話框中,用戶可以設置未映射成員的屬性,如設置屬性的數據類型、缺省值、運行/設計過程中的讀寫狀態等,同時對未做改變的成員使用缺省值。

例如在本示例程序中,設置Style屬性的數據類型為Integer,缺省值為0,運行和設計的過程中都是可讀、可寫的。屬性設置完成後,單擊"下一步"按鈕進入下一個窗口。如圖8-12所示。

在"已完成"對話框中用戶可以選擇是否查看ActiveX控件界麵設計的總結報告,如果一切都準備就緒,單擊"完成"按鈕就完成了對ActiveX控件的界麵設計。

圖8-11 "設置屬性"對話框

圖8-12 "已完成"對話框

5.為ActiveX控件添加代碼

按照以上的步驟完成對ActiveX控件的界麵設計後,參考如下所示的程序清單在窗體UserControl中添加代碼。