VB程序是由過程組成的,每個(gè)過程是為了完成一定的任務(wù),由一組獨(dú)立的程序代碼組成。
VB中有兩大類過程,事件過程和通用過程。事件過程是當(dāng)對(duì)象的某個(gè)事件發(fā)生時(shí),對(duì)該事件做出響應(yīng)的程序代碼段,它是應(yīng)用程序的主體。當(dāng)多個(gè)不同的事件過程需要執(zhí)行一段相同的代碼,完成相同或相似的任務(wù),為了避免程序代碼的重復(fù),同時(shí)便于程序代碼的修改,把這段代碼獨(dú)立出來,作為一個(gè)過程,這樣的過程稱為通用過程??梢?,通用過程是多個(gè)事件過程的,相同之處、公共部分。
事件過程是由對(duì)象的某一時(shí)間驅(qū)動(dòng)或由系統(tǒng)自動(dòng)調(diào)用,而通用過程不依附于某一對(duì)象,通過被調(diào)用語句(如call語句)調(diào)用才起作用,而且通用過程可以被多次調(diào)用,調(diào)用該過程的過程叫調(diào)用過程。
通用過程分為兩種類型,sub過程和Function過程。Function和sub過程的區(qū)別:
Function過程有返回值,可以像變量一樣出現(xiàn)在表達(dá)式中,
如:Function max(m as integer,n as Integer) as Integer
If m<n then
Max=n
Else
Max=m
End if
End function
Private sub form_load()
Dim x as integer, y as integer
Print max(x , y)
End sub
Sub過程不返回值,就不能出現(xiàn)在表達(dá)式中。
所以聲明Function過程要指明數(shù)據(jù)類型,也是返回值的數(shù)據(jù)類型。默認(rèn)為variant類型。
Function過程的調(diào)用
直接使用函數(shù)名的調(diào)用方法有兩種形式:
1, 如果函數(shù)又返回值,按如下方式調(diào)用:
被賦值對(duì)象=函數(shù)名(實(shí)際參數(shù)1,實(shí)際參數(shù)2,…)
2, 如果放棄函數(shù)的返回值,一般按如下方式調(diào)用:
函數(shù)名 實(shí)際參數(shù)1,實(shí)際參數(shù)2,…
使用call語句來調(diào)用Function過程,這種方法放棄了函數(shù)的返回值。
Call 函數(shù)名(參數(shù)1,參數(shù)2,…)
因?yàn)樵赩B中代碼是模塊化的,所以不同的模塊就需求不同的過程,過程是有作用域的。
VB應(yīng)用程序的結(jié)構(gòu)如下:
模塊級(jí)過程又稱為文件級(jí)過程,是在某個(gè)模塊內(nèi)定義的過程,在定義sub過程和Function過程時(shí)選擇Private關(guān)鍵字,該過程僅限于本模塊中調(diào)用。
全局級(jí)過程又稱工程級(jí)過程,是指在定義sub過程和Function過程時(shí)選擇Public關(guān)鍵字或缺省選擇,作用域?yàn)檎麄€(gè)工程,可被該工程中的所有過程調(diào)用。
調(diào)用窗體中的過程:格式為:call form1.subex()
調(diào)用類模塊中的過程:不用類名,而是用該類提前聲明的實(shí)例變量名,如:
Dim sample as new class1
Call sample.subex()
調(diào)用標(biāo)準(zhǔn)模塊中的過程:如果該過程在整個(gè)工程中名字是唯一的,可以按名直接調(diào)用。如果其他模塊中有同名過程,為了區(qū)別需要前置模塊名。
如:假設(shè)模塊M1和M2都有subcom過程,在M2中調(diào)用:
call subcom() ‘執(zhí)行M2自己的subcom過程
Call M1.subcom ‘執(zhí)行M1自己的subcom過程
所以:標(biāo)準(zhǔn)模塊中一般放置通用過程。在標(biāo)準(zhǔn)模塊中聲明的過程,在窗體模塊中可以直接調(diào)用,如果在窗體模塊中聲明的Public過程,其他窗體模塊調(diào)用時(shí)要注明窗體名。
多重窗體和submain過程
有時(shí)應(yīng)用程序啟動(dòng)執(zhí)行時(shí),不需要加載任何窗體,而是需要首先執(zhí)行一段程序代碼,完成一些初始化工作。所以此時(shí)就用到了submain過程。Submain過程一般用于標(biāo)準(zhǔn)模塊中,并且在工程屬性中將啟動(dòng)對(duì)象設(shè)置為submain過程。標(biāo)準(zhǔn)模塊可以有多個(gè)但是submain只有一個(gè)。
Submain過程中,一般設(shè)置多重窗體的方法。多重窗體的方法有四種:load,show,Hide,Unload方法。
這里只介紹show,Hide和Unload方法。
Show使用show可以顯示被調(diào)用的窗體,如果在調(diào)用show方法之前沒有把窗體調(diào)入內(nèi)存,那么show方法會(huì)自動(dòng)的把窗體調(diào)入內(nèi)存。窗體模式值是選項(xiàng),取值為0或1,當(dāng)取0或省略時(shí),執(zhí)行show方法顯示的窗體是無模式的——非模態(tài)窗體。用戶可以激活其他窗體,對(duì)其他窗體進(jìn)行操作。當(dāng)取值為1時(shí),執(zhí)行show方法顯示的窗體是模式的——模態(tài)窗體。此種模式只有關(guān)閉了對(duì)話框才能進(jìn)行其他操作。
Unload方法和Hide方法的區(qū)別:
當(dāng)程序運(yùn)行后,窗體都占用系統(tǒng)的內(nèi)存,用Hide方法隱藏窗體只是使窗體看不到即visible屬性值為FALSE,但它還占用系統(tǒng)的內(nèi)存;而是用Unload方法是將窗體卸載,即窗體不占有系統(tǒng)的內(nèi)存。所以在編寫代碼時(shí),當(dāng)用不到窗體時(shí),使用Unload方法將窗體卸載,免得占著一定的內(nèi)存,使機(jī)子的運(yùn)行速度變慢。
聯(lián)系客服