Visual Basic 應用程序的結構
一個應用程序實際上無非是指揮計算機完成任務的指令集。應用程序的結構是組織指令的方法,也就是指令存放的位置和指令的執行順序。
典型的 "hello world" 例子以及諸如此類的簡單應用程序都具有簡單結構。對於只有一行的代碼來說,組織結構並不十分重要。但應用程序越復雜,對組織或結構的要求也就越明顯。試想一下,如果允許應用程序以隨機順序去執行,那將會帶來什麼樣的混亂。除了對應用程序的執行進行控制外,如何在應用程序中輕松查找特定指令,結構也起著很重要的作用。
由於 Visual Basic 應用程序是基於對象的,所以應用程序的代碼結構就是該程序在屏幕上物理表示的模型。根據定義,對象包含數據和代碼。在屏幕上看到的窗體代表屬性,這些屬性定義了窗體的外觀和內在特性。應用程序中的每個窗體都有一個包含其代碼的相關的窗體模塊(文件擴展名為 .frm)。
每個窗體模塊都包含事件過程,即代碼部分,其中有為響應特定事件而執行的指令。窗體可包含控件。在窗體模塊中,對窗體上的每個控件都有一個對應的事件過程集。除了事件過程,窗體模塊還可包含通用過程,它對來自任何事件過程的調用都作出響應。
可將那些與特定窗體或控件無關的代碼放入另一類型的模塊——標准模塊(文件擴展名為 .BAS )中。一個過程可能用來響應幾個不同對象中的事件,應該將這個過程放在標准模塊中,而不應在每一個對象的事件過程中重復相同的代碼。
用類模塊(文件擴展名為 .CLS )創建對象,這些對象可被應用程序內的過程調用。標准模塊只包含代碼,而類模塊既包含代碼又包含數據,可視為沒有物理表示的控件。
在第四章“工程的管理”中敘述了哪些部件可以添加到應用程序中,本章將說明如何將代碼寫到構成應用程序的各種部件中。按照缺省規定,工程包含唯一的窗體模塊。可根據需要另行添加窗體、類和標准模塊。第九章“用對象編程”將討論類模塊。
事件驅動應用程序的工作方式
事件是窗體或控件識別的動作。在響應事件時,事件驅動應用程序執行 Basic代碼。Visual Basic 的每一個窗體和控件都有一個預定義的事件集。如果其中有一個事件發生,而且,在關聯的事件過程中存在代碼,則 Visual Basic 調用該代碼。
盡管 Visual Basic 中的對象自動識別預定義的事件集,但要判定它們是否響應具體事件以及如何響應具體事件則是編程的責任了。代碼部分(即事件過程)與每個事件對應。 想讓控件響應事件時,就把代碼寫入這個事件的事件過程之中。
對象所識別的事件類型多種多樣,但多數類型為大多數控件所共有。例如,大多數對象都能識別 Click 事件——如果單擊窗體,則執行窗體的單擊事件過程中的代碼;如果單擊命令按鈕,則執行命令按鈕的Click 事件過程中的代碼。每個情況中的實際代碼幾乎完全不一樣。
這裡是事件驅動應用程序中的典型事件序列:
1. 啟動應用程序,裝載和顯示窗體。
2. 窗體(或窗體上的控件)接收事件。事件可由用戶引發(例如鍵盤操作),可由系統引發(例如定時器事件),也可由代碼間接引發(例如,當代碼裝載窗體時的 Load 事件)。
3. 如果在相應的事件過程中存在代碼,就執行代碼。
4. 應用程序等待下一次事件。
注意 許多事件伴隨其它事件發生。例如,在 DblClick 事件發生時,MouseDown、MouseUp 和 Click 事件也會發生。