過程概述
將程序分割成較小的邏輯部件就可以簡化程序設(shè)計任務(wù)。稱這些部件為過程,它們可以變成增強和擴展 Visual Basic 的構(gòu)件?! ∵^程可用于壓縮重復(fù)任務(wù)或共享任務(wù),例如,壓縮頻繁的計算、文本與控件操作和數(shù)據(jù)庫操作。
用過程編程有兩大好處:
1.過程可使程序劃分成離散的邏輯單元,每個單元都比無過程的整個程序容易調(diào)試。
2.一個程序中的過程,往往不必修改或只需稍作改動,便可以成為另一個程序的構(gòu)件。
在 Visual Basic 中使用下列幾種過程:
Sub 過程不返回值。
Function 過程返回值。
property 過程返回并指定值,以及設(shè)置對象引用。
詳細信息 關(guān)于屬性過程,請參閱第九章“用對象編程”。
Sub 過程
子過程是在響應(yīng)事件時執(zhí)行的代碼塊。將模塊中的代碼分成子過程后,在應(yīng)用程序中查找和修改代碼變得更容易了。
子過程的語法是:
[Private|Public][Static]Sub procedurename (arguments)
statements
End Sub
每次調(diào)用過程都會執(zhí)行 Sub 和 End Sub 之間的 statements??梢詫⒆舆^程放入標準模塊、類模塊和窗體模塊中。按照缺省規(guī)定,所有模塊中的子過程為 Public(公用的),這意味著在應(yīng)用程序中可隨處調(diào)用它們。
過程的 arguments 類似于變量聲明,它聲明了從調(diào)用過程傳遞進來的值。在 Visual Basic 中應(yīng)區(qū)分通用過程和事件過程這兩類子過程。
通用過程
通用過程告訴應(yīng)用程序如何完成一項指定的任務(wù)。一旦確定了通用過程,就必須專由應(yīng)用程序來調(diào)用。反之,直到為響應(yīng)用戶引發(fā)的事件或系統(tǒng)引發(fā)的事件而調(diào)用事件過程時,事件過程通??偸翘幱诳臻e狀態(tài)。
為什么要建立通用過程呢?理由之一就是,幾個不同的事件過程也許要執(zhí)行同樣的動作。將公共語句放入一分離開的過程(通用過程)并由事件過程來調(diào)用它,誠為編程上策。這樣一來就不必重復(fù)代碼,也容易維護應(yīng)用程序。例如,VCR 示例應(yīng)用程序使用了一個通用過程,幾個不同滾動按鈕的 Click 事件都調(diào)用這個通用過程。圖 5.7 說明了通用過程的使用。Click事件中的代碼調(diào)用按鈕管理器的子過程,子過程運行自身的代碼,然后將控制返回到 Click 事件過程。
事件過程當 Visual Basic 中的對象對一個事件的發(fā)生作出認定時,便自動用相應(yīng)于事件的名字調(diào)用該事件的過程。因為名字在對象和代碼之間建立了聯(lián)系,所以說事件過程是附加在窗體和控件上的。
一個控件的事件過程將控件的(在 Name 屬性中規(guī)定的)實際名字、下劃線 (_) 和事件名組合起來。例如,如果希望在單擊了一個名為cmdPlay 的命令按鈕之后,這個按鈕會調(diào)用事件過程,則要使用cmdPlay_Click 過程。
一個窗體事件過程將詞匯 "Form"、下劃線和事件名組合起來。如果希望在單擊窗體之后,窗體會調(diào)用事件過程,則要使用 Form_Click 過程。(和控件一樣,窗體也有的名字,但不能在事件過程的名字中使用這些名字。)如果正在使用 MDI 窗體,則事件過程將詞匯 " MDIForm" 、下劃線和事件名組合起來,如 MDIForm_Load。
所有的事件過程使用相同的語法。
雖然可以自己編寫事件過程,但使用 Visual Basic 提供的代碼過程會更方便,這個過程自動將正確的過程名包括進來。從“對象框”中選擇一個對象,從“過程框”中選擇一個過程,就可在“代碼編輯器” 窗口選擇一個模板。
在開始為控件編寫事件過程之前先設(shè)置控件的 Name 屬性,這不失為一個好主意。如果對控件附加一個過程之后又更改控件的名字,那么也必須更改過程的名字,以符合控件的新名字。否則,Visual Basic 無法使控件和過程相符。過程名與控件名不符時,過程就成為通用過程。
詳細信息 Visual Basic 可識別各種窗體和控件的各種事件。關(guān)于所有事件的說明,請參閱語言參考。
Function 過程
Visual Basic 包含內(nèi)置的或內(nèi)部的函數(shù),如 Sqr、Cos 或 Chr。此外,還可用 Function 語句編寫自己的 Function 過程。
函數(shù)過程的語法是:
Private|Public][Static]Function procedurename (arguments) [As type]
statements
End Function
與 Sub 過程一樣,F(xiàn)unction 過程也是一個獨立的過程,可讀取參數(shù)、執(zhí)行一系列語句并改變其參數(shù)的值。與子過程不同,F(xiàn)unction 過程可返回一個值到調(diào)用的過程。在Sub 過程與Function 過程之間有三點區(qū)別:
一般說來,讓較大的語句或表達式的右邊包含函數(shù)過程名和參數(shù)(returnvalue = function),這就調(diào)用了函數(shù)。
與變量完全一樣,函數(shù)過程有數(shù)據(jù)類型。這就決定了返回值的類型(如果沒有 As 子句,缺省的數(shù)據(jù)類型為 Variant)。
給 procedurename 自身賦一個值,就可返回這個值。Function 過程返回一個值時,該值可成為較大表達式的一部分。
將程序分割成較小的邏輯部件就可以簡化程序設(shè)計任務(wù)。稱這些部件為過程,它們可以變成增強和擴展 Visual Basic 的構(gòu)件?! ∵^程可用于壓縮重復(fù)任務(wù)或共享任務(wù),例如,壓縮頻繁的計算、文本與控件操作和數(shù)據(jù)庫操作。
用過程編程有兩大好處:
1.過程可使程序劃分成離散的邏輯單元,每個單元都比無過程的整個程序容易調(diào)試。
2.一個程序中的過程,往往不必修改或只需稍作改動,便可以成為另一個程序的構(gòu)件。
在 Visual Basic 中使用下列幾種過程:
Sub 過程不返回值。
Function 過程返回值。
property 過程返回并指定值,以及設(shè)置對象引用。
詳細信息 關(guān)于屬性過程,請參閱第九章“用對象編程”。
Sub 過程
子過程是在響應(yīng)事件時執(zhí)行的代碼塊。將模塊中的代碼分成子過程后,在應(yīng)用程序中查找和修改代碼變得更容易了。
子過程的語法是:
[Private|Public][Static]Sub procedurename (arguments)
statements
End Sub
每次調(diào)用過程都會執(zhí)行 Sub 和 End Sub 之間的 statements??梢詫⒆舆^程放入標準模塊、類模塊和窗體模塊中。按照缺省規(guī)定,所有模塊中的子過程為 Public(公用的),這意味著在應(yīng)用程序中可隨處調(diào)用它們。
過程的 arguments 類似于變量聲明,它聲明了從調(diào)用過程傳遞進來的值。在 Visual Basic 中應(yīng)區(qū)分通用過程和事件過程這兩類子過程。
通用過程
通用過程告訴應(yīng)用程序如何完成一項指定的任務(wù)。一旦確定了通用過程,就必須專由應(yīng)用程序來調(diào)用。反之,直到為響應(yīng)用戶引發(fā)的事件或系統(tǒng)引發(fā)的事件而調(diào)用事件過程時,事件過程通??偸翘幱诳臻e狀態(tài)。
為什么要建立通用過程呢?理由之一就是,幾個不同的事件過程也許要執(zhí)行同樣的動作。將公共語句放入一分離開的過程(通用過程)并由事件過程來調(diào)用它,誠為編程上策。這樣一來就不必重復(fù)代碼,也容易維護應(yīng)用程序。例如,VCR 示例應(yīng)用程序使用了一個通用過程,幾個不同滾動按鈕的 Click 事件都調(diào)用這個通用過程。圖 5.7 說明了通用過程的使用。Click事件中的代碼調(diào)用按鈕管理器的子過程,子過程運行自身的代碼,然后將控制返回到 Click 事件過程。
事件過程當 Visual Basic 中的對象對一個事件的發(fā)生作出認定時,便自動用相應(yīng)于事件的名字調(diào)用該事件的過程。因為名字在對象和代碼之間建立了聯(lián)系,所以說事件過程是附加在窗體和控件上的。
一個控件的事件過程將控件的(在 Name 屬性中規(guī)定的)實際名字、下劃線 (_) 和事件名組合起來。例如,如果希望在單擊了一個名為cmdPlay 的命令按鈕之后,這個按鈕會調(diào)用事件過程,則要使用cmdPlay_Click 過程。
一個窗體事件過程將詞匯 "Form"、下劃線和事件名組合起來。如果希望在單擊窗體之后,窗體會調(diào)用事件過程,則要使用 Form_Click 過程。(和控件一樣,窗體也有的名字,但不能在事件過程的名字中使用這些名字。)如果正在使用 MDI 窗體,則事件過程將詞匯 " MDIForm" 、下劃線和事件名組合起來,如 MDIForm_Load。
所有的事件過程使用相同的語法。
雖然可以自己編寫事件過程,但使用 Visual Basic 提供的代碼過程會更方便,這個過程自動將正確的過程名包括進來。從“對象框”中選擇一個對象,從“過程框”中選擇一個過程,就可在“代碼編輯器” 窗口選擇一個模板。
在開始為控件編寫事件過程之前先設(shè)置控件的 Name 屬性,這不失為一個好主意。如果對控件附加一個過程之后又更改控件的名字,那么也必須更改過程的名字,以符合控件的新名字。否則,Visual Basic 無法使控件和過程相符。過程名與控件名不符時,過程就成為通用過程。
詳細信息 Visual Basic 可識別各種窗體和控件的各種事件。關(guān)于所有事件的說明,請參閱語言參考。
Function 過程
Visual Basic 包含內(nèi)置的或內(nèi)部的函數(shù),如 Sqr、Cos 或 Chr。此外,還可用 Function 語句編寫自己的 Function 過程。
函數(shù)過程的語法是:
Private|Public][Static]Function procedurename (arguments) [As type]
statements
End Function
與 Sub 過程一樣,F(xiàn)unction 過程也是一個獨立的過程,可讀取參數(shù)、執(zhí)行一系列語句并改變其參數(shù)的值。與子過程不同,F(xiàn)unction 過程可返回一個值到調(diào)用的過程。在Sub 過程與Function 過程之間有三點區(qū)別:
一般說來,讓較大的語句或表達式的右邊包含函數(shù)過程名和參數(shù)(returnvalue = function),這就調(diào)用了函數(shù)。
與變量完全一樣,函數(shù)過程有數(shù)據(jù)類型。這就決定了返回值的類型(如果沒有 As 子句,缺省的數(shù)據(jù)類型為 Variant)。
給 procedurename 自身賦一個值,就可返回這個值。Function 過程返回一個值時,該值可成為較大表達式的一部分。