第11章 VB過程與函數(shù)_第1頁
第11章 VB過程與函數(shù)_第2頁
第11章 VB過程與函數(shù)_第3頁
第11章 VB過程與函數(shù)_第4頁
第11章 VB過程與函數(shù)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Visual basic與SQL Server 2005 清華大學(xué)出版社第第11章章 過程與函數(shù)過程與函數(shù)u11.1 過程過程u11.2 參數(shù)傳遞參數(shù)傳遞u11.3 過程的嵌套調(diào)用與遞歸調(diào)用過程的嵌套調(diào)用與遞歸調(diào)用 u11.4 過程和變量的作用范圍過程和變量的作用范圍 u11.5多窗體與多窗體與Sub Main過程過程 Visual basic與SQL Server 2005 清華大學(xué)出版社本章要點本章要點u過程的有關(guān)術(shù)語過程的有關(guān)術(shù)語u過程的定義與調(diào)用過程的定義與調(diào)用u使用過程時的參數(shù)傳遞使用過程時的參數(shù)傳遞u過程的嵌套與遞歸調(diào)用過程的嵌套與遞歸調(diào)用 u多窗體與多窗體與Sub Main過程過

2、程u用戶自定義函數(shù)的使用用戶自定義函數(shù)的使用Visual basic與SQL Server 2005 清華大學(xué)出版社 在VB中自定義過程分為以下幾種:以“sub”保留字開始的為子過程;以“function”保留字開始的為函數(shù)過程;以“Property”保留字開始的為屬性過程;以“Event”保留字開始的為事件過程。 常用的過程有兩種類型,通用過程和事件過程。事件過程與某個具體對象有關(guān),它是能被對象識別的一個預(yù)先定義好的動作,前面各章學(xué)習(xí)和使用的過程都是事件過程,它是VB應(yīng)用程序的主體。而通用過程與對象無關(guān),它能被不同的事件過程或程序代碼調(diào)用,能提高編程的效率。VB提供了兩種通用過程,Sub過程

3、(子程序)和Function過程(函數(shù))。 過程需要編寫相應(yīng)的代碼,稱為過程的定義。通用過程可以在代碼窗口的通用聲明下定義,也可以在標(biāo)準(zhǔn)模塊中定義。定義好的通用過程就像完工的集成塊,還需要將它組裝到產(chǎn)品中去才能發(fā)揮作用,在應(yīng)用程序中使用定義好的過程,稱為過程的調(diào)用。11.1 過程過程Visual basic與SQL Server 2005 清華大學(xué)出版社 在定義過程時,可以在代碼窗口的通用聲明中,直接輸入過程的所有代碼;也可以選中代碼窗口后,選擇“工具”“添加過程”命令,在“添加過程”對話框中輸入過程名,選擇好類型和范圍后確定,來添加過程頭,然后再輸入過程體。一、一、Sub過程的定義 語法格式

4、為 Static Private Public Sub過程名 (參數(shù)表) 語句塊 Exit Sub End Sub Sub過程的說明:(1)Sub過程必須以Sub開頭,End Sub結(jié)束。 Static:表明這個過程中的局部變量是靜態(tài)的,即過程執(zhí)行完成后,過程內(nèi)的變量的值將保留下來。如果沒有Static,則局部變量是動態(tài)的,即過程執(zhí)行完成后,過程內(nèi)的變量的值將清空(0或空串)。 11.1.1 Sub過程 Visual basic與SQL Server 2005 清華大學(xué)出版社(2)參數(shù)表:傳送數(shù)據(jù)進(jìn)入Sub的變量或數(shù)組,參數(shù)之間用逗號分隔。每個參數(shù)的格式為: ByVal 變量名 ( ) As

5、類型 類型就是Integer、Single等,缺省則為變體型。ByVal:表明該參數(shù)是“傳值”(Passed By Value)參數(shù),缺省時(相當(dāng)于ByRef)表明該參數(shù)是“引用”(Passed By Reference)參數(shù)。一般而言:用不加ByVal的“引用”參數(shù)即可。 (3)Exit Sub用于在必要時中途退出過程。(4)Sub過程不能嵌套。即Sub過程的過程體內(nèi)不能包含內(nèi)部的Sub過程。但調(diào)用時可以嵌套。 (5)建立通用Sub過程 通用Sub不屬于任何一個事件驅(qū)動過程,所以不能把通用Sub放在事件過程內(nèi)部,應(yīng)該放在事件過程外面,與事件過程獨立開來,即通用Sub與事件過程是同一級別的。1

6、1.1.1 Sub過程Visual basic與SQL Server 2005 清華大學(xué)出版社11.1.1 Sub過程二、 Sub過程的調(diào)用調(diào)用Sub過程一般可用以下兩種方法。(1) 用Call語句格式:Call 過程名(實參)如果是無參過程,括號可以省略。例如: Call Proc 調(diào)用無參過程Proc Call Try(a,b) 調(diào)用有參過程Try(x,y)(2) 過程名 實參表。把過程名作為一個獨立的語句與Call的區(qū)別:去掉Call,去掉實參的括號。例如: Proc 調(diào)用無參過程Proc Try a, b 調(diào)用有參過程Try(x,y) 注意,在第二種調(diào)用方法中,省略了Call,此時不需

7、要小括號,否則會出錯。Visual basic與SQL Server 2005 清華大學(xué)出版社11.1.1 Sub過程例11.1 求1-2+3-4+.+n的值。 1、界面設(shè)計、界面設(shè)計 程序的界面由兩個標(biāo)簽、兩個文本框(一個用于輸入、一個用于輸出)和兩個按鈕構(gòu)成。Visual basic與SQL Server 2005 清華大學(xué)出版社11.1.1 Sub過程2、代碼分析與設(shè)計、代碼分析與設(shè)計 n的變化規(guī)則是偶數(shù)為負(fù),奇數(shù)為正,可加一個專門的符號位來實現(xiàn),只要符號位與n的初值保存一致,然后n增加1,符號位就取反即可。程序主要代碼如下: Private Sub sum_num(n As Integ

8、er, s As Long) Dim i As Integer, t As Integer s = 0 t = 1 For i = 1 To n s = s + i * t t = -t Next iEnd SubPrivate Sub Command1_Click() Dim n As Integer, i As Integer, s As Long n = Val(Text1.Text) sum_num n, s Text2.Text = sEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 The

9、n Command1_Click End SubVisual basic與SQL Server 2005 清華大學(xué)出版社11.1.2 函數(shù)(函數(shù)(Function過程)過程) 在VB中有兩類函數(shù),即標(biāo)準(zhǔn)函數(shù)和用戶自定義函數(shù)。標(biāo)準(zhǔn)函數(shù)是指系統(tǒng)已經(jīng)做出定義的函數(shù),VB的標(biāo)準(zhǔn)函數(shù)按函數(shù)功能可分為4類,即數(shù)學(xué)函數(shù) 、字符串函數(shù)、日期和時間函數(shù)和轉(zhuǎn)換函數(shù) 。 雖然VB提供了常用的標(biāo)準(zhǔn)函數(shù),可以使用這些標(biāo)準(zhǔn)函數(shù)來實現(xiàn)某些數(shù)學(xué)計算或數(shù)據(jù)類型的轉(zhuǎn)換,但許多應(yīng)用程序常常需要自己來定義函數(shù),以實現(xiàn)某種特定的計算。自定義函數(shù)是由用戶按照指定的語法規(guī)則自己定義的函數(shù)。Visual basic與SQL Server 2

10、005 清華大學(xué)出版社11.1.2 函數(shù)(函數(shù)(Function過程)過程)一、 函數(shù)的定義格式為:Static Private Public Function函數(shù)名(參數(shù)表) As類型 語句塊 Exit Function 函數(shù)名=計算結(jié)果 End Sub說明:與Sub比較:大部分一樣,定義方法也一樣。主要的區(qū)別是:(1) 函數(shù)名后多了As類型,限定函數(shù)結(jié)果的類型;(2) 多了一句 函數(shù)名=計算結(jié)果。注意:必須有這一句才能把計算結(jié)果傳給函數(shù)。Visual basic與SQL Server 2005 清華大學(xué)出版社11.1.2 函數(shù)(函數(shù)(Function過程)過程)二、 函數(shù)的調(diào)用 Funct

11、ion定義好以后,就成了一個與標(biāo)準(zhǔn)函數(shù)一樣的函數(shù),調(diào)用方法也與標(biāo)準(zhǔn)函數(shù)一樣: 函數(shù)名(自變量) 調(diào)用函數(shù)一般可用以下三種方法。 (1)直接調(diào)用。將函數(shù)名和相應(yīng)的實參放在一個表達(dá)式中即可。當(dāng)需要接收過程的返回值時,只能使用這種調(diào)用方法。 例如:Y=Sqr(16)(2) Call語句調(diào)用。使用Call語句調(diào)用Function過程的方法與Sub的調(diào)用方法相似,此時,F(xiàn)unction過程的返回值將被丟失。一把不用這種方法。(3) 無參數(shù)直接調(diào)用。Visual basic與SQL Server 2005 清華大學(xué)出版社11.1.2 函數(shù)(函數(shù)(Function過程)過程)【例11.2】 將例11.1改用

12、函數(shù)來實現(xiàn)。代碼分析與設(shè)計本程序的基本思路與例9.1是一樣的,代碼差別也不大。在Sub過程中,結(jié)果通過參數(shù)s帶回,而Function過程則通過函數(shù)本身返回。程序代碼如下(相同部分省略): Private Function sum_num(n As Integer) As Long Dim i As Integer, t As Integer, s As Long s = 0 t = -1 For i = a To ns = s + i * t t = -t Next i sum_num = sEnd FunctionPrivate Sub Command1_Click() Dim n As I

13、nteger, s As Long n = Val(Text1.Text) s = sum_num(n) 此時不能使用第二種調(diào)用方法 Text2.Text = sEnd SubVisual basic與SQL Server 2005 清華大學(xué)出版社11.1.3 過程與函數(shù)的區(qū)別過程與函數(shù)的區(qū)別 1過程以sub開頭,而函數(shù)以function開頭。 2. 當(dāng)過程有多個返回值時,就應(yīng)當(dāng)用sub過程;當(dāng)過程有一個返回值時,可以使用函數(shù)。3函數(shù)是通過函數(shù)名回送一個結(jié)果值。在函數(shù)的形式參數(shù)表后面要說明函數(shù)(即結(jié)果)的類型。而過程的結(jié)果由參數(shù)送回。4. 函數(shù)體中至少要包括一個給函數(shù)賦值的語句。而過程不能給過

14、程名賦值。5. 函數(shù)的調(diào)用出現(xiàn)在表達(dá)式中。而過程的調(diào)用必須作為一個單獨的語句。6. 形參沒有具體的值,只代表了參數(shù)的個數(shù)、位置、類型;只能是簡單變量,不能是常量、數(shù)組元素、表達(dá)式。Visual basic與SQL Server 2005 清華大學(xué)出版社11.2 參數(shù)傳遞參數(shù)傳遞 在調(diào)用一個有參數(shù)的過程,首先進(jìn)行的是“形實結(jié)合”,即按傳值傳遞或按地址傳遞方式,實現(xiàn)調(diào)用程序和被調(diào)用的過程之間的數(shù)據(jù)傳遞。通過參數(shù)傳遞,Sub過程或Function過程就能根據(jù)不同的變量執(zhí)行同種任務(wù)。為了敘述方便,將形式參數(shù)簡稱為形參,實在參數(shù)簡稱為實參。 在Visual Basic中傳遞參數(shù)有兩種方式,即按值傳遞(P

15、assed by Value)和按地址傳遞(Passed by refecence)。按值傳遞參數(shù)時,傳遞的只是實參變量的副本。如果在被調(diào)過程中改變了形參值,只影響副本,而不會影響實參變量本身。即當(dāng)控制返回調(diào)用程序時,實參變量保持調(diào)用前的值不變。在定義過程時,若形參名前面沒有關(guān)鍵字“ByVal”,即形參名前面缺省修飾詞,或有“ByRef”關(guān)鍵字時,則指定了它是一個按地址傳遞的參數(shù)。按地址傳遞參數(shù)時,把實參變量(簡單變量、數(shù)組元素、數(shù)組以記錄等)的地址傳送給被調(diào)過程。因此實參變量的地址和與之結(jié)合的形參地址是相同的,也就是說形參和實參共用內(nèi)存的同一“地址”,即共享同一個存儲單元。這樣在被調(diào)過程中的

16、形式參數(shù)值一旦被改變,相應(yīng)的實參值也跟隨著被改變了。Visual basic與SQL Server 2005 清華大學(xué)出版社11.2.1 形式參數(shù)與實際參數(shù)形式參數(shù)與實際參數(shù) 形式參數(shù)是指在定義通用過程時,出現(xiàn)在sub或function語句中的變量,是接收傳送子過程的變量。形式參數(shù)表的各個變量之間用逗號分隔。 實際參數(shù)是指在調(diào)用sub或function過程時,傳送給sub或function過程的常量、變量或表達(dá)式。實參表可由常量、表達(dá)式、有效的變量名、數(shù)組名組成,實參表中各參數(shù)用逗號分隔。 簡單地說,無論是Sub還是Function,參數(shù)是用來傳送數(shù)據(jù)的。定義時的參數(shù)叫形式參數(shù)(形參),調(diào)用時

17、的參數(shù)叫實際參數(shù)(實參)。Visual basic與SQL Server 2005 清華大學(xué)出版社11.2.1 形式參數(shù)與實際參數(shù)形式參數(shù)與實際參數(shù)例如:Private Sub Form_Click( )Dim a as intger, b as integer, c as integer A=5: b=3 : c=9 ClsPrint a; b; cCall prod( (a), (b), (c) ) 實際參數(shù)Print a; b; cEnd SubSub prod (a as intger, b as integer, c as integer ) 形式參數(shù)Print a; b; ca=6

18、 : b=8 : c=a*bprint a; b; cEnd SubVisual basic與SQL Server 2005 清華大學(xué)出版社11.2.2 參數(shù)傳遞參數(shù)傳遞 參數(shù)傳遞的方式有兩種,按值傳遞和按地址傳遞,并且只能有實參傳遞給形參。如果CALL語句中的實際參數(shù)是常量或表達(dá)式,或者定義過程時選用ByVall關(guān)鍵字,就可以按值傳遞;如果CALL語句中的實際參數(shù)為變量,或者定義過程時選用ByRef關(guān)鍵字,就可以按地址傳遞。否則缺省按地址傳遞參數(shù)。一、按值傳遞參數(shù) 按值傳遞參數(shù)時,傳遞的只是變量的副本。如果過程改變了這個值,則所作變量只影響副本而不會影響變量本身。當(dāng)要求變量按值傳送時,可以先

19、把變量變成一個表達(dá)式,把變量轉(zhuǎn)換成表達(dá)式的最簡單的方法就是把它放在括號內(nèi)?;蛘叨x過程時用ByVal關(guān)鍵字指出參數(shù)是按值來傳遞的。例如:Sub Post (ByVal num as Integer )例如:運行下面給出的程序,理解按值傳遞參數(shù)。Visual basic與SQL Server 2005 清華大學(xué)出版社11.2.2 參數(shù)傳遞參數(shù)傳遞例如:運行下面給出的程序,理解按值傳遞參數(shù)。Private Sub Form_Click( )Dim a as intger, b as integer, c as integer a=5: b=3 : c=9 ClsPrint a; b; c Call

20、 prod( (a), (b), (c) ) 函數(shù)調(diào)用Print a; b; cEnd SubSub prod (a as intger, b as integer, c as integer )Print a; b; ca=6 : b=8 : c=a*bprint a; b; cEnd SubVisual basic與SQL Server 2005 清華大學(xué)出版社11.2.2 參數(shù)傳遞參數(shù)傳遞二、按地址傳遞參數(shù)按地址傳參數(shù),就是讓過程根據(jù)變量的內(nèi)存地址去訪問實際變量的內(nèi)容,即形式參數(shù)與實際參數(shù)使用相同的內(nèi)存地址單元, 這樣通過子過程就可以改變變量本身的值。系統(tǒng)缺省按地址傳遞參數(shù)。在傳遞調(diào)用時

21、,實際參數(shù)必須是變量,常量或表達(dá)式無法傳址。例如:運行下面給出的程序,理解按地址傳遞參數(shù)。Private Sub Form_Click( ) Dim a as intger, b as integer, c as integer A=5: b=3 : c=9ClsPrint a; b; cCall prod( a, b, c )Print a; b; cEnd SubSub prod (x as intger, y as integer, z as integer ) Print x; y; zx=6 : y=8 : z=x*yprint x; y; zVisual basic與SQL Ser

22、ver 2005 清華大學(xué)出版社11.2.2 參數(shù)傳遞參數(shù)傳遞三、按值和按地址混合傳送參數(shù)例如:Private Sub Form_Click( ) Dim x as intger, y as integer X=8 : y=3Call test(5, x, y+1) 5傳值,X傳址, Y+1傳值Print “主程序”,5, x, yEnd SubSub test (a as intger, b as integer, c as integer ) Print “子程序”, a, b, c A=2: b=4: c=9End SubVisual basic與SQL Server 2005 清華大學(xué)

23、出版社11.3過程的嵌套與遞歸調(diào)用過程的嵌套與遞歸調(diào)用 在一個過程中調(diào)用另一個過程,稱為過程的嵌套調(diào)用。如果一個過程直接或間接調(diào)用其自身,稱為過程的遞歸調(diào)用,它是一種特殊的嵌套調(diào)用。 Visual basic與SQL Server 2005 清華大學(xué)出版社11.3.1 過程的嵌套調(diào)用過程的嵌套調(diào)用 Visual Basic的過程定義是互相平行和獨立的,也就是說在定義過程時,一個過程內(nèi)不能包含另一個過程。雖然不能嵌套定義過程,但Visual Basic中可以嵌套調(diào)用過程,也就是主程序可以調(diào)用子過程,在子過程中還可以調(diào)用另外的子過程,這種程序結(jié)構(gòu)稱為過程的嵌套。如圖11-2所示。Visual ba

24、sic與SQL Server 2005 清華大學(xué)出版社11.3.1 過程的嵌套調(diào)用過程的嵌套調(diào)用Visual basic與SQL Server 2005 清華大學(xué)出版社11.3.2 過程的遞歸調(diào)用 Visual Basic的過程具有遞歸調(diào)用功能。遞歸分為兩種類型,一種是直接遞歸,即在過程中調(diào)用過程本身;另一種是間接遞歸,即間接地調(diào)用一個過程,例如第一個過程調(diào)用了第二個過程,第二個過程又回過頭來調(diào)用第一個過程。遞歸調(diào)用在完成階乘運算、級數(shù)運算、冪指數(shù)運算等方面特別有效。 例11.7 用遞歸的方法計算n!。 分析:自然數(shù)n的階乘可以遞歸定義為: 遞歸的結(jié)束條件為:n=0時,n!=1。建立好的用戶界

25、面如圖11-4所示。 Visual basic與SQL Server 2005 清華大學(xué)出版社11.3.2 過程的遞歸調(diào)用Visual basic與SQL Server 2005 清華大學(xué)出版社11.3.2 過程的遞歸調(diào)用求階乘的遞歸過程Fact的代碼為: Private Function Fact(n As Integer) As Long If n 0 Then Fact = n * Fact(n - 1) Else Fact = 1 End If End Function 按鈕的Click事件代碼為: Private Sub Command1_Click() Dim n As Integ

26、er, m As Long n = Val(Text1.Text) If n 0 Then Exit Sub m = Fact(n) Label1.Caption = m End Sub Visual basic與SQL Server 2005 清華大學(xué)出版社11.3.2 過程的遞歸調(diào)用Visual basic與SQL Server 2005 清華大學(xué)出版社11.4過程和變量的作用范圍過程和變量的作用范圍 VB應(yīng)用程序(通常稱為工程)的組織結(jié)構(gòu),它由窗體模塊、標(biāo)準(zhǔn)模塊和類模塊組成。VB程序代碼就保存在窗體模塊文件(*.Frm)、標(biāo)準(zhǔn)模塊文件(*.Bas)或類模塊文件(*.Cls)中。它們形成了

27、工程的一種模塊層次結(jié)構(gòu)。o窗體模塊(文件擴展名為 .frm ) ,可以包含處理事件的過程、通用過程以及變量、常數(shù)、類型和外部過程的窗體級聲明。如果要在文本編輯器中觀察窗體模塊,則還會看到窗體及其控件的描述,包括它們的屬性設(shè)置值。寫入窗體模塊的代碼是該窗體所屬的具體應(yīng)用程序?qū)S玫?;它也可以引用該?yīng)用程序內(nèi)的其它窗體或?qū)ο?。o標(biāo)準(zhǔn)模塊(文件擴展名為.bas),可以包含變量、常數(shù)、類型、外部過程和全局過程的全局(在整個應(yīng)用程序范圍內(nèi)有效的)聲明或模塊級聲明。寫入標(biāo)準(zhǔn)模塊的代碼不必綁在特定的應(yīng)用程序上,則在許多不同的應(yīng)用程序中可以重用標(biāo)準(zhǔn)模塊。o類模塊(文件擴展名為 .CLS),在 Visual Ba

28、sic 中類模塊是面向?qū)ο缶幊痰幕A(chǔ)。可在類模塊中編寫代碼建立新對象。這些新對象可以包含自定義的屬性和方法。實際上,窗體正是這樣一種類模塊,在其上可安放控件,可顯示窗體窗口。 Visual basic與SQL Server 2005 清華大學(xué)出版社11.4.1 過程的作用范圍過程的作用范圍 通用子過程和函數(shù)過程既可寫在窗體模塊中也可寫在標(biāo)準(zhǔn)模塊中,在定義時可選用關(guān)鍵字Private(局部)和Public(全局),來決定它們能被調(diào)用的范圍。 按過程的作用范圍來劃分,過程可分為:模塊級過程和全局級過程1、窗體/模塊級過程: 加Private關(guān)鍵字的過程,只能被定義的窗體或模塊中的過程調(diào)用。2、全局

29、級過程: 加Public關(guān)鍵字(或缺?。┑倪^程,可供該應(yīng)用程序的所有窗體和所有標(biāo)準(zhǔn)模塊中的過程調(diào)用。Visual basic與SQL Server 2005 清華大學(xué)出版社11.4.2 變量的作用范圍變量的作用范圍一、變量的分類 在VB中,由于可以在過程中和模塊中聲明變量,根據(jù)定義變量的位置和定義變量的語句不同,變量可以分為:局部變量(過程級變量)、窗體/模塊級變量(私有的模塊級變量,能被本模塊的所有過程和函數(shù)使用)和全局級變量(公有的模塊級變量)。1、局部變量: 在過程內(nèi)部使用 Dim 或者 Static 關(guān)鍵字來聲明的變量,只在聲明它們的過程中才能被訪問或改變該變量的值,別的過程不可訪問。

30、所以可以在不同的過程中聲明相同名字的局部變量而互不影響。 例如:Private Sub Form_Load()Dim n as integern= 10End SubPrivate Sub From_Click()Dim n as integerPrint “n=“;nEnd SubVisual basic與SQL Server 2005 清華大學(xué)出版社11.4.2 變量的作用范圍變量的作用范圍2、窗體/模塊級變量:在“通用聲明”段中用Dim語句或用Private語句聲明的變量,可被本窗體/模塊的任何過程訪問。但其他模塊卻不能訪問該變量。例如:在“通用聲明”段聲明如下變量Private s A

31、s StringDim a As Integer,b As Single 全局變量全局變量也稱公有的模塊級變量,在窗體模塊或標(biāo)準(zhǔn)模塊的頂部的“通用”聲明段用Public關(guān)鍵字聲明,它的作用范圍是整個應(yīng)用程序,即可被本應(yīng)用程序的任何過程或函數(shù)訪問。例如:Public a As Integer,b As single用下表來表示著三種變量的區(qū)別。Visual basic與SQL Server 2005 清華大學(xué)出版社11.4.2 變量的作用范圍變量的作用范圍二、變量的作用范圍 從變量的作用空間來說,每個變量均有其作用域;從變量的作用時間來看,每個變量均有自己的生存期。1. 變量的作用域 變量的作用

32、域是指變量的有效范圍。按變量的作用域不同,可將變量分為局部變量和全局變量。根據(jù)變量的聲明位置不同,變量可分為過程級變量和模塊級變量。(1) 過程級變量 在一個過程內(nèi)部定義的變量稱為過程級變量,這種變量只能在定義該變量的過程中使用,一般用Dim來定義。(2) 模塊級變量 模塊級變量可在窗體模塊的通用聲明中聲明,也可在標(biāo)準(zhǔn)模塊中聲明。一般可用Dim、Private、Public關(guān)鍵字。在標(biāo)準(zhǔn)模塊中,還可用Global關(guān)鍵字。 Dim:定義模塊級的局部變量。 Private:定義模塊級私有變量,它只能在模塊內(nèi)部使用,仍屬于局部變量。 Public:定義模塊級公有變量,標(biāo)準(zhǔn)模塊中的模塊級公有變量,可以

33、在整個應(yīng)用程序中直接使用,屬于全局變量;窗體模塊的模塊級公有變量,必須用“窗體名.公有變量名”的形式才能在別的模塊中使用,不能直接使用。 Global:定義全局變量。Visual basic與SQL Server 2005 清華大學(xué)出版社11.4.2 變量的作用范圍變量的作用范圍2. 變量的生存期 變量的生存期是變量占用內(nèi)存的時間。按變量的生存期不同,可將變量分為動態(tài)變量、靜態(tài)變量。(1) 動態(tài)變量 當(dāng)程序運行到變量所在的過程時,才給動態(tài)變量分配內(nèi)存單元,當(dāng)過程運行結(jié)束后,動態(tài)變量所占的內(nèi)存單元會被立即釋放,其值丟失。每次進(jìn)入變量所在的過程時,動態(tài)變量都要重新初始化。(2) 靜態(tài)變量 靜態(tài)變量

34、與動態(tài)變量完全不同,當(dāng)變量所在過程運行結(jié)束后,變量仍然占用相應(yīng)的內(nèi)存單元,其值一直保存,當(dāng)以后再次運行變量所在過程時,不會重新初始化。過程級局部變量一般用Static關(guān)鍵字,將其聲明為靜態(tài)變量。Visual basic與SQL Server 2005 清華大學(xué)出版社11.4.2 變量的作用范圍變量的作用范圍3.使用過程中的注意事項(1)公用變量與局部變量同名 在不同過程中定義同名變量,它們互不影響,但若在一過程中定義使用了與全局變量同名的變量,則就應(yīng)注意。 注意:在過程中,如果定義了與模塊級變量(在通用部分使用Private或Dim聲明的變量),則在該過程內(nèi)不能引用同名的模塊級變量。Visua

35、l basic與SQL Server 2005 清華大學(xué)出版社11.4.2 變量的作用范圍變量的作用范圍(2)全局變量同名 如果不同模塊中的全局變量使用同一名字,則通過同時引用模塊名和變量名就可以在代碼中區(qū)分它們。 例如,如果有一個在 Form1 和 Module1 中都聲明了公用的 Integer 變量 intX,則把它們作為 MX 和FX 來引用便得到正確值。也就是說如果不同模塊中的全局變量使用同一名字,引用時就需要使用“模塊名.變量名”的形式來區(qū)分它們。 Visual basic與SQL Server 2005 清華大學(xué)出版社11.5 多窗體與多窗體與

36、Sub Main過程過程 當(dāng)應(yīng)用程序功能較強和分類較多,程序和用戶的交互頻繁時,如果只用一個窗體和用戶進(jìn)行交互,一方面難以進(jìn)行合乎美觀原則的設(shè)計,另一方面分類工作很難,設(shè)計出來的界面不符合友好原則。這時最好使用多重窗體程序設(shè)計,增強程序界面的友好性。 多窗體指的應(yīng)用中有多個窗體,它們之間沒有絕對的從屬關(guān)系。每個窗體的界面設(shè)計與單窗體的完全一樣,只是在設(shè)計之前應(yīng)先建立窗體,這可以通過菜單“工程”/“添加窗體”命令實現(xiàn)。程序代碼是針對每個窗體編寫的,當(dāng)然,應(yīng)注意窗體之間存在的先后順序和相互調(diào)用的關(guān)系。所以,多重窗體實際上是單一窗體的集合,而單一窗體是多重窗體程序設(shè)計的基礎(chǔ)。 Visual basi

37、c與SQL Server 2005 清華大學(xué)出版社11.5.1 多窗體應(yīng)用程序多窗體應(yīng)用程序 u分析應(yīng)用要求,將其功能劃分為不同的幾部分,分別創(chuàng)建各個窗體、模塊u在創(chuàng)建窗體時,除各窗體自身要完成的功能外,還要考慮窗體之間的調(diào)用關(guān)系u點擊工程/屬性菜單,在啟動對象中選擇應(yīng)用運行時首先執(zhí)行的對象u運行應(yīng)用程序,檢驗應(yīng)用及各窗體的運行情況 Visual basic與SQL Server 2005 清華大學(xué)出版社11.5.1 多窗體應(yīng)用程序多窗體應(yīng)用程序 1、多窗體程序設(shè)計常用的方法在單窗體程序設(shè)計中,所有的操作都在一個窗體中完成,不需要在多個窗體中切換。而在多窗體程序中,需要打開、關(guān)閉、隱藏或顯示指

38、定的窗體,這可以通過相應(yīng)的語句和方法來實現(xiàn)。 在多窗體程序設(shè)計經(jīng)常用到下面四種方法:Load,Show Hide和Unload。(1)Load方法它的語法結(jié)構(gòu)如下:Load 窗體名稱使用Load方法調(diào)用的窗體被存入內(nèi)存,并不顯示出來,同時會產(chǎn)生一個Form_Load()事件。例如:Load Form2 將Form2窗體存入內(nèi)存(2)Show方法它的語法結(jié)構(gòu)如下:窗體名稱.ShowShow方法用來顯示被調(diào)用的窗體。Show方法兼有裝入和顯示兩種功能,也就是說,在執(zhí)行Show方法時,如果窗體不在內(nèi)存中,則Show方法會自動的把窗體調(diào)入內(nèi)存,然后再顯示出來。例如: Load Form2Form2.S

39、how 將Form2存于內(nèi)存,并顯示Form2窗體Visual basic與SQL Server 2005 清華大學(xué)出版社11.5.1 多窗體應(yīng)用程序多窗體應(yīng)用程序 (3)Hide方法它的語法結(jié)構(gòu)如下:窗體名稱.Hide使用Hide方法會隱藏被調(diào)用的窗體,既不在屏幕上顯示,但仍在內(nèi)存中(與Unload方法不同),被調(diào)用的窗體中的屬性等已經(jīng)處于無效的狀態(tài)。例如:Form1.HideForm2.Show 將Form隱藏,并顯示Form2窗體(4)Unload方法它的語法結(jié)構(gòu)如下:Unload 窗體名稱使用Unload方法會清除內(nèi)存中指定的窗體,與此窗體中的變量和屬性等都會處于無效的狀態(tài),在移去窗體

40、的同時會產(chǎn)生一個Form_QueryUnload()事件。例如:Form1.ShowUnload Form2顯示Form1窗體,從內(nèi)存中移去Form2窗體。Visual basic與SQL Server 2005 清華大學(xué)出版社11.5.1 多窗體應(yīng)用程序多窗體應(yīng)用程序 2、一個多窗體程序設(shè)計示例下面就以一個示例來說明如何運進(jìn)多窗體的程序設(shè)計。(1)啟動新工程 1)設(shè)置屬性2)添加控件在空白的窗體上添加如下控件:五個Label控件、四個TextBox控件和兩個CommandButton控件。(2)添加窗體 選擇菜單“工程(Project)”/“添加窗體(add form)”命令,彈出對話框,在

41、添加窗體的對話框中選擇“窗體項,單擊打開按鈕,系統(tǒng)就會自動的向原有的工程中添加一個窗體。1)添加控件 在新的窗體上放置一CommandButton控件,作用是在隱藏新增的窗體的同時顯示原有的窗體。則窗體如下:2)添加代碼在繼續(xù)按鈕的Command1_Click()事件中添加下列代碼:Private Sub Command1_Click() Form2.Hide 隱藏窗體2 Form1.Show 顯示窗體1End Sub 程序說明:在窗體Form2被顯示的過程中,單擊繼續(xù)按鈕,就會激活Command1_Click()事件,然后通過Form2.Hide 和Form2.Show兩條語句實現(xiàn)隱藏窗體和顯示窗體的功能。Visual basic與SQL Server 2005 清華大學(xué)出版社11.5.1 多窗體應(yīng)用程序多窗體應(yīng)用程序(3)添加說明模塊選擇菜單工程/添加模塊,就會彈出對話框:在模塊的聲明段中添加下列代碼:Global a1 as SingleGlobal a2 as SingleGlobal a3 as SingleGlobal a3 as Single 定義四個全局變量,分別用來存儲第一季度,第二季度、第三季度和第四季度的銷售情況(4)添加程序代碼1)窗體Form1中的代碼如下:Priva

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論