多模塊程序設(shè)計和調(diào)試_第1頁
多模塊程序設(shè)計和調(diào)試_第2頁
多模塊程序設(shè)計和調(diào)試_第3頁
多模塊程序設(shè)計和調(diào)試_第4頁
多模塊程序設(shè)計和調(diào)試_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、關(guān)于多模塊程序設(shè)計與調(diào)試1第1頁,共30頁,2022年,5月20日,19點43分,星期三2第十一章 多模塊程序設(shè)計與調(diào)試11.1 多模塊程序設(shè)計11.2 程序的調(diào)試第2頁,共30頁,2022年,5月20日,19點43分,星期三311.1 多模塊程序設(shè)計本節(jié)知識點:啟動對象窗體的加載與卸載窗體加載時的事件窗體卸載時的事件多模塊之間的數(shù)據(jù)共享程序的中止第3頁,共30頁,2022年,5月20日,19點43分,星期三411.1 多模塊程序設(shè)計到目前為止所編制的程序都是單模塊程序。但在實際工作中,功能稍微復(fù)雜一些的程序就會包含多個模塊。VB包含三種類型的模塊:窗體模塊、標(biāo)準(zhǔn)模塊和類模塊。窗體模塊(.fr

2、m):是一個相對獨立的程序單位,每個窗體對應(yīng)一個窗體模塊。窗體模塊包含窗體、窗體和控件的屬性設(shè)置、事件過程和通用過程、模塊級的變量和常量。默認(rèn)時應(yīng)用程序只有一個窗體,如應(yīng)用程序有多個窗體,會有多個以.frm為擴展名的窗體模塊文件。第4頁,共30頁,2022年,5月20日,19點43分,星期三511.1 多模塊程序設(shè)計標(biāo)準(zhǔn)模塊(.bas):標(biāo)準(zhǔn)模塊沒有界面對象,只有代碼。專門用來存放工程中各個窗體共同使用的全局通用過程、變量、常量及自定義數(shù)據(jù)類型。標(biāo)準(zhǔn)模塊的代碼保存在擴展名為“.bas”的文件中。類模塊(.cls):類模塊用于建立新對象,這些新對象可以包含自定義的屬性和方法。類模塊既包含代碼又包

3、含數(shù)據(jù),它可以被應(yīng)用程序內(nèi)的過程調(diào)用。第5頁,共30頁,2022年,5月20日,19點43分,星期三611.1 多模塊程序設(shè)計1、啟動對象啟動對象:是指一個程序運行時,首先被加載并執(zhí)行的對象。可以是窗體模塊也可以是標(biāo)準(zhǔn)模塊。設(shè)定工程的啟動對象:Sub Main過程:在一個含有多窗體的應(yīng)用程序中,有時需要在顯示多個窗體之前對一些條件進行初始化,需要在啟動程序時執(zhí)行一個特定的過程。在VB中,這樣的過程稱為啟動過程,并命名為Sub Main。 Sub Main過程位于標(biāo)準(zhǔn)模塊中,一個工程只能有一個Sub Main過程。第6頁,共30頁,2022年,5月20日,19點43分,星期三711.1 多模塊程

4、序設(shè)計沒有窗體的工程:雖然VB自動為每個標(biāo)準(zhǔn)EXE工程提供了一個窗體,但工程可以沒有任何窗體。在沒有窗體的工程中,至少要有一個標(biāo)準(zhǔn)模塊,標(biāo)準(zhǔn)模塊中要有Sub Main過程,并已設(shè)為啟動對象。這時的Sub Main過程是程序的入口,它可以再調(diào)用其他過程來完成更復(fù)雜的任務(wù)。當(dāng)由Sub Main調(diào)用的所有過程執(zhí)行完畢后,程序就結(jié)束了。第7頁,共30頁,2022年,5月20日,19點43分,星期三811.1 多模塊程序設(shè)計在一個既有窗體又有Sub Main過程的工程中,如沒有將Sub Main設(shè)為啟動對象,它就是一個普通過程。一個工程必須有一個啟動對象,默認(rèn)啟動對象是第一個被創(chuàng)建的窗體。第8頁,共30

5、頁,2022年,5月20日,19點43分,星期三911.1 多模塊程序設(shè)計2、窗體的加載與卸載作為啟動對象的窗體是由操作系統(tǒng)加載的,其他窗體只有使用VB的窗體加載語句或方法才能加載到內(nèi)存中,執(zhí)行時顯示在屏幕上。當(dāng)窗體操作完畢,可以將它隱藏或從內(nèi)存中卸載。下面學(xué)習(xí)與窗體加載和卸載有關(guān)的語句和方法。第9頁,共30頁,2022年,5月20日,19點43分,星期三1011.1 多模塊程序設(shè)計Load語句窗體在顯示之前,首先要加載到內(nèi)存中。語法:Load 窗體名使用Load語句加載到內(nèi)存的窗體并不被顯示。窗體一旦被加載到內(nèi)存,便可通過程序?qū)λ捌渌鶎倏丶M行操作。(通過設(shè)置Visible屬性,使其可見)

6、例子:Private Sub Form1_Click() Load Form2 End Sub第10頁,共30頁,2022年,5月20日,19點43分,星期三1111.1 多模塊程序設(shè)計Show方法窗體對象的方法。當(dāng)調(diào)用這個方法時,如果窗體尚未被加載到內(nèi)存,則先加載到內(nèi)存,然后再顯示它。語法:窗體名.Show 0|1參數(shù)為0或被省略時,顯示窗體后,繼續(xù)執(zhí)行后面的語句。即非模態(tài)的。參數(shù)為1時,顯示窗體并暫停執(zhí)行后面的語句。即模態(tài)的。只有隱藏或卸載了模態(tài)窗體之后,才繼續(xù)執(zhí)行后面的語句。第11頁,共30頁,2022年,5月20日,19點43分,星期三1211.1 多模塊程序設(shè)計Hide方法調(diào)用窗體的

7、Hide方法可以隱藏這個窗體。語法: 窗體名.Hide此方法同時將窗體的Visible屬性置為False,但不卸載窗體。如果在執(zhí)行此方法之前窗體尚未加載,則加載它。第12頁,共30頁,2022年,5月20日,19點43分,星期三1311.1 多模塊程序設(shè)計Unload語句使用Unload語句可把指定的窗體從內(nèi)存中卸載。語法: Unload 窗體名Unload語句卸載掉的只是窗體和控件的顯示部分,它的代碼(如過程和變量)仍然可用。窗體卸載之后,運行時對窗體和控件屬性進行的所有修改都將丟失。程序中對該窗體與窗體上控件的訪問會導(dǎo)致窗體重新加載。單擊窗體右上角的“關(guān)閉”按紐也可卸載窗體。第13頁,共3

8、0頁,2022年,5月20日,19點43分,星期三1411.1 多模塊程序設(shè)計3、窗體加載時的事件窗體從未被加載到加載,再由加載到顯示,會依次收到系統(tǒng)引發(fā)的Initialize、Load和Active事件。Initialize事件窗體的初始化事件。在加載一個窗體時,此事件最先發(fā)生。事件過程語法:Private Sub Form_Initialize() End Sub第14頁,共30頁,2022年,5月20日,19點43分,星期三1511.1 多模塊程序設(shè)計Load事件由于Load事件是窗體“生存周期”(從加載到卸載)中僅次于Initialize事件發(fā)生的事件,所以一般在該事件過程中加入窗體的

9、初始化代碼。過程語法:Private Sub Form_Load() End Sub注意:Load事件發(fā)生時,窗體并未顯示,所以在該事件過程中不應(yīng)有繪圖和設(shè)置焦點的行為。第15頁,共30頁,2022年,5月20日,19點43分,星期三1611.1 多模塊程序設(shè)計Activate事件當(dāng)窗體被激活變?yōu)榛顒哟绑w時引發(fā)Activate事件。激活的例子:窗體標(biāo)題欄由灰色變?yōu)樗{色,使用鼠標(biāo)點擊。事件過程語法:Private Sub Form_Activate() End Sub注意:與Initialize事件和Load事件不同, Activate事件在窗體的一個生存周期內(nèi)可以多次觸發(fā),除了第一次顯示窗體外

10、,每次窗體被激活時,都會觸發(fā)此事件??稍谠撌录^程中繪圖和設(shè)置焦點。第16頁,共30頁,2022年,5月20日,19點43分,星期三1711.1 多模塊程序設(shè)計4、窗體卸載時的事件窗體在卸載時會依次收到系統(tǒng)發(fā)送的四個事件:Deactivate、QueryUnload、Unload、Terminate 。Deactivate事件當(dāng)窗體由活動變?yōu)榉腔顒訒r觸發(fā)此事件。過程語法:Private Sub Form_Deactivate() End Sub第17頁,共30頁,2022年,5月20日,19點43分,星期三1811.1 多模塊程序設(shè)計QueryUnload事件當(dāng)窗體要被卸載之前,先引發(fā)此事件。

11、過程語法:Private Sub Form_QueryUnload(Cancel as Integer, UnloadMode as Integer) End Sub參數(shù)UnloadMode傳遞給事件過程的值可以反映卸載是如何引起的。該參數(shù)值與所代表的意義見表11.1第18頁,共30頁,2022年,5月20日,19點43分,星期三1911.1 多模塊程序設(shè)計參數(shù)Cancel可以用來終止窗體的卸載。可在該事件過程中為Cancel參數(shù)賦一個非0值,終止窗體的卸載。而值為0或不賦值,則繼續(xù)卸載??梢栽赒ueryUnload事件過程中提示用戶對未保存的工作進行保存?;蛘吒鶕?jù)各種情況決定是否繼續(xù)進行窗體

12、卸載。被終止卸載的窗體,仍然顯示在屏幕上并保持激活狀態(tài)。第19頁,共30頁,2022年,5月20日,19點43分,星期三2011.1 多模塊程序設(shè)計【例11.1】Private Sub Command1_Click() Unload MeEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim i As Integer If UnloadMode 1 Then MsgBox 請單擊“關(guān)閉”按鈕退出本程序。, vbInformation Cancel = 1 Exit Sub End If

13、i = MsgBox(數(shù)據(jù)尚未保存,是否保存?, vbYesNoCancel + vbQuestion) If i = vbYes Then 選擇是則執(zhí)行保存代碼 MsgBox 數(shù)據(jù)已保存。, vbInformation Save 進行相應(yīng)的保存操作 ElseIf i = vbCancel Then 選擇取消則停止卸載 Cancel = 1 End IfEnd Sub第20頁,共30頁,2022年,5月20日,19點43分,星期三2111.1 多模塊程序設(shè)計Unload事件如果QueryUnload事件過程未終止窗體的卸載,當(dāng)窗體從屏幕上消失時,會繼續(xù)引發(fā)Unload事件。語法:Private

14、 Sub Form_Unload(Cancel as Integer) End SubCancel參數(shù)的作用同上。在事件過程中將其值設(shè)置為非0,可以阻止窗體卸載。Unload事件過程中,適合進行關(guān)閉文件、清除所占系統(tǒng)資源的工作。第21頁,共30頁,2022年,5月20日,19點43分,星期三2211.1 多模塊程序設(shè)計Terminate事件是窗體卸載過程中的最后一個事件,事件過程語法:Private Sub Form_Terminate() End Sub第22頁,共30頁,2022年,5月20日,19點43分,星期三2311.1 多模塊程序設(shè)計5、多模塊之間的數(shù)據(jù)共享VB的工程通常由多個模塊

15、組成,各個模塊之間即相互獨立又相互聯(lián)系,模塊之間可以共享代碼和數(shù)據(jù).共享代碼:通過調(diào)用定義在其他模塊中的全局通用過程實現(xiàn)。共享數(shù)據(jù):通過以下四種方法實現(xiàn)。使用全局變量、全局常量和全局?jǐn)?shù)組。使用對象屬性。使用過程參數(shù)。使用文件。第23頁,共30頁,2022年,5月20日,19點43分,星期三2411.1 多模塊程序設(shè)計使用全局變量、全局常量和全局?jǐn)?shù)組在程序內(nèi)部進行數(shù)據(jù)交換。一個模塊的代碼可以存取另一個模塊中定義的全局變量、全局?jǐn)?shù)組或全局變量.使用對象屬性VB允許一個模塊的程序代碼訪問另一個模塊中對象的屬性和方法。例子:Private Form_Click() 窗體Form1的事件過程 Form2

16、.Text1.Text = “你好!” End Sub第24頁,共30頁,2022年,5月20日,19點43分,星期三2511.1 多模塊程序設(shè)計使用過程參數(shù)一個模塊的代碼調(diào)用另一個模塊中定義的全局過程時,可以通過參數(shù)將數(shù)據(jù)從一個模塊傳遞到另一個模塊。使用文件一個模塊以文件形式將數(shù)據(jù)保存在磁盤上,另一個模塊讀取該文件,可以實現(xiàn)數(shù)據(jù)共享。第25頁,共30頁,2022年,5月20日,19點43分,星期三2611.1 多模塊程序設(shè)計6、程序的終止程序的終止就是程序的關(guān)閉或退出,VB應(yīng)用程序一般由多個模塊組成,程序的終止體現(xiàn)為模塊全部從內(nèi)存中卸載。Unload語句使用Unload語句可以卸載窗體,終止程序。End語句End語句可以強行終止程序的執(zhí)行。同時關(guān)閉文件、清除變量、且不向窗體發(fā)送任何事件。第26頁,共30頁,2022年,5月20日,19點43分,星期三2711.1 多模塊程序設(shè)計Stop語句Stop語句會使程序進入中斷狀態(tài)(即暫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論