




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 在在第二章第二章我們介紹了我們介紹了VBVB應用程序(通常稱為應用程序(通常稱為工程)的組織結構,它由工程)的組織結構,它由窗體模塊、標準模塊和類窗體模塊、標準模塊和類模塊模塊組成。組成。VBVB程序代碼就保存在窗體模塊文件程序代碼就保存在窗體模塊文件(.Frm.Frm)、標準模塊文件()、標準模塊文件(.Bas.Bas)或類模塊文)或類模塊文件(件(.Cls.Cls)中。它們形成了工程的一種模塊層次)中。它們形成了工程的一種模塊層次結構,如下圖所示。結構,如下圖所示。第七章第七章 過程和變量的作用域過程和變量的作用域 7.1 概 述一個應用程序的組成結構7.1.1 窗體模塊窗體模塊(文件擴
2、展名為文件擴展名為 .FRM ) 窗體模塊。窗體模塊可以包含處理事件的過窗體模塊。窗體模塊可以包含處理事件的過程、通用過程以及變量、常數(shù)、類型和外部過程程、通用過程以及變量、常數(shù)、類型和外部過程的窗體級聲明。如果要在文本編輯器中觀察窗體的窗體級聲明。如果要在文本編輯器中觀察窗體模塊,則還會看到窗體及其控件的描述,包括它模塊,則還會看到窗體及其控件的描述,包括它們的屬性設置值。寫入窗體模塊的代碼是該窗體們的屬性設置值。寫入窗體模塊的代碼是該窗體所屬的具體應用程序專用的;它也可以引用該應所屬的具體應用程序專用的;它也可以引用該應用程序內的其它窗體或對象。用程序內的其它窗體或對象。7.1.2 標準模
3、塊標準模塊(文件擴展名為文件擴展名為BAS) 它們可以包含變量、常數(shù)、類型、外部過程它們可以包含變量、常數(shù)、類型、外部過程和全局過程的全局和全局過程的全局(在整個應用程序范圍內有效的在整個應用程序范圍內有效的)聲明或模塊級聲明。寫入標準模塊的代碼不必綁聲明或模塊級聲明。寫入標準模塊的代碼不必綁在特定的應用程序上,則在許多不同的應用程序在特定的應用程序上,則在許多不同的應用程序中可以重用標準模塊。中可以重用標準模塊。7.1.3 類模塊類模塊(文件擴展名為文件擴展名為 .CLS) 在在 Visual Basic 中類模塊是面向對象編程的基中類模塊是面向對象編程的基礎??稍陬惸K中編寫代碼建立新對象
4、。這些新礎??稍陬惸K中編寫代碼建立新對象。這些新對象可以包含自定義的屬性和方法。實際上,窗對象可以包含自定義的屬性和方法。實際上,窗體正是這樣一種類模塊,在其上可安放控件,可體正是這樣一種類模塊,在其上可安放控件,可顯示窗體窗口。顯示窗體窗口。7.2 過程的作用域過程的作用域Public|Private Sub 子過程名子過程名(形式參數(shù)列表形式參數(shù)列表) . End Sub概念概念 通用子過程和函數(shù)過程既可寫在通用子過程和函數(shù)過程既可寫在窗體模塊中窗體模塊中也可寫在也可寫在標準模塊中標準模塊中,在定義時可選用關鍵字,在定義時可選用關鍵字PrivatePrivate(局部)(局部)和和Pub
5、licPublic(全局)(全局),來決定它們能被調用的范圍。,來決定它們能被調用的范圍。 1、窗體窗體/模塊級過程:模塊級過程: 加加Private關鍵字的過程,只能被定義的窗體或模關鍵字的過程,只能被定義的窗體或模 塊中塊中的過程調用。的過程調用。2、全局級過程:全局級過程: 加加Public關鍵字關鍵字(或缺?。ɑ蛉笔。┑倪^程,可供該應用程序的過程,可供該應用程序的所有窗體和所有標準模塊中的過程調用。的所有窗體和所有標準模塊中的過程調用。按過程的作用范圍來劃分,過程可分為:按過程的作用范圍來劃分,過程可分為: 模塊級過程模塊級過程 全局級過程全局級過程用例7.1來說明過程的作用域 總結
6、歸納過程的定義及作用域如下表(教材總結歸納過程的定義及作用域如下表(教材Pg.163)幾點說明:(教材Pg.164)7.3 變量的作用域概述:概述: 在VB中,由于可以在過程中和模塊中聲明變量,根據(jù)定義變量的位置和定義變量的語句不同,變量可以分為:局部變量(過程級變量)窗體/模塊級變量(私有的模塊級變量,能被本模塊的所有過程和函數(shù)使用)全局級變量(公有的模塊級變量)。7.3.1 過程級變量過程級變量局部變量局部變量局部變量:局部變量:在過程內用聲明的變量,只能在本過在過程內用聲明的變量,只能在本過程中使用。程中使用。 在過程內部使用在過程內部使用 Dim 或者或者 Static 關鍵字來關鍵字
7、來聲明的變量,只在聲明它們的過程中才能被訪問聲明的變量,只在聲明它們的過程中才能被訪問或改變該變量的值,別的過程不可訪問。所以可或改變該變量的值,別的過程不可訪問。所以可以在不同的過程中聲明相同名字的局部變量而互以在不同的過程中聲明相同名字的局部變量而互不影響。不影響。 例:例:Private Sub Form_Load()Dim n%n= 10End SubPrivate Sub From_Click()Dim n%Print “n=“;nEnd Sub程序運行后單擊窗體,其輸出結果是什么?程序運行后單擊窗體,其輸出結果是什么?7.3.2 窗體窗體/模塊級變量模塊級變量 窗體窗體/模塊級變量
8、:模塊級變量:在在“ “通用聲明通用聲明” ”段中用段中用Dim語句或用語句或用Private語句聲明的變量,可被本窗體語句聲明的變量,可被本窗體/模塊的任何過程訪模塊的任何過程訪問。但其他模塊卻不能訪問該變量。問。但其他模塊卻不能訪問該變量。例如:在例如:在“ “通用聲明通用聲明” ”段聲明如下變量段聲明如下變量Private s As String Dim a As Integer,b As Single 7.3.3 全局變量全局變量 全局變量也稱公有的模塊級變量,在窗體模塊或標準模塊的頂部的“通用”聲明段用Public關鍵字聲明,它的作用范圍是整個應用程序,即可被本應用程序的任何過程或函
9、數(shù)訪問。例如: Public a As Integer,b As single3種變量聲明及使用規(guī)則如下表:種變量聲明及使用規(guī)則如下表:一、公用變量與局部變量同名一、公用變量與局部變量同名 在不同過程中定義同名變量,它們互不影響,但若在一在不同過程中定義同名變量,它們互不影響,但若在一過程中定義使用了與全局變量同名的變量,則就應注意。過程中定義使用了與全局變量同名的變量,則就應注意。 7.3.4 關于多個變量同名關于多個變量同名 注意:在過程中,如果定義了與模塊級變量(在通注意:在過程中,如果定義了與模塊級變量(在通用部分使用用部分使用Private或或Dim聲明的變量),則在該過程內聲明的變
10、量),則在該過程內不能引用同名的模塊級變量。例如,上面的例子中,如不能引用同名的模塊級變量。例如,上面的例子中,如果將定義全局變量的語句果將定義全局變量的語句Public Temp As Integer改為改為Private Temp As Integer 則在則在Command1的單擊事件中就的單擊事件中就不使用模塊級的不使用模塊級的Temp變量。變量。 Public Temp As Integer 定義全局變量定義全局變量Private Sub Form_Load()Temp = 1 將全局變量將全局變量Temp 的值設置成的值設置成 1End SubPrivate Sub Command
11、1_Click()Dim Temp As Integer 定義局部變量定義局部變量Temp = 2 將局部變量將局部變量Temp 的值設置成的值設置成 2 Print temp=; Temp Print temp=; Form1.TempEnd SubPrivate Sub Command2_Click() Print temp=; Temp End Sub二、全局變量同名二、全局變量同名 如果不同模塊中的全局變量使用同一名字,則通過如果不同模塊中的全局變量使用同一名字,則通過同時引用模塊名和變量名就可以在代碼中區(qū)分它們。同時引用模塊名和變量名就可以在代碼中區(qū)分它們。例如,如果有一個在例如,如
12、果有一個在 Form1 和和 Module1 中都聲中都聲明了公用的明了公用的 Integer 變量變量 intX,則把它們作為,則把它們作為 MX 和和FX 來引用便得到正來引用便得到正確值。也就是說確值。也就是說如果不同模塊中的全局變量使用同一如果不同模塊中的全局變量使用同一名字,引用時就需要使用名字,引用時就需要使用“模塊名模塊名.變量名變量名”的形式的形式來區(qū)分它們。來區(qū)分它們。7.3.5 靜態(tài)變量靜態(tài)變量 除作用域之外,變量還有存活期,在這一期間變量能除作用域之外,變量還有存活期,在這一期間變量能夠保持它們的值。夠保持它們的值。 在應用程序的存活期
13、內一直保持在應用程序的存活期內一直保持模塊級變量模塊級變量和和全局變全局變量量的值。但是,對于的值。但是,對于Dim聲明的局部變量聲明的局部變量僅當過程執(zhí)行期僅當過程執(zhí)行期間存在,當一個過程執(zhí)行完畢,它的局部變量的值就已經間存在,當一個過程執(zhí)行完畢,它的局部變量的值就已經不存在,而且不存在,而且變量所占據(jù)的內存也被釋放變量所占據(jù)的內存也被釋放。當下一次執(zhí)行。當下一次執(zhí)行該過程時,它的所有局部變量將重新初始化。該過程時,它的所有局部變量將重新初始化。 概念概念局部變量的存活期由其定義的關鍵詞來決定。局部變量的存活期由其定義的關鍵詞來決定。局部變量聲明:局部變量聲明: Dim聲明:聲明:隨過程的調
14、用而分配存貯單元,變量的初隨過程的調用而分配存貯單元,變量的初始化;過程體結束,變量的內容自動消失,存貯單元釋放。始化;過程體結束,變量的內容自動消失,存貯單元釋放。 Static聲明聲明,每次調用過程,變量保持上次調用結束時,每次調用過程,變量保持上次調用結束時的值。的值。 聲明形式:聲明形式: Static 變量名變量名 AS 類型類型Static Function 函數(shù)過程名函數(shù)過程名(參數(shù)列表參數(shù)列表) As 類型類型 Static Sub 子過程名子過程名(參數(shù)列表參數(shù)列表) 注意:過程名前加注意:過程名前加Static,表示該過程內,表示該過程內的局部變量都是靜態(tài)變量。的局部變量都
15、是靜態(tài)變量。例例7.2 有一個人編了下面一段程序,想用變量n記錄單擊窗體的次數(shù)。Private Sub Form_Click() Dim n As Integer n = n + 1 Print 已單擊次數(shù):; n & 次End Sub分析程序運行后多次單擊窗體的輸出結果: 要記錄單擊窗體次數(shù),如何實現(xiàn)?并比較使用模塊要記錄單擊窗體次數(shù),如何實現(xiàn)?并比較使用模塊變量和靜態(tài)變量的差別。變量和靜態(tài)變量的差別。例7.3 教材P168Private Sub Form_Click() Dim i% ,isum% For i = 1 To 5isum = sum(i)Print isum, Next i
16、End Sub Private Function sum(n As Integer) Dim j As Integer j = j + n sum = jEnd Function1 2 3 4 5Static j As Integer 結果如何?結果如何? 補充例題:補充例題:7.4 多重窗體與多模塊程序設計 一個稍微復雜的應用程序,不僅有多個窗體,還可能一個稍微復雜的應用程序,不僅有多個窗體,還可能有標準模塊和類模塊,如下圖所示。有標準模塊和類模塊,如下圖所示。 本節(jié)介紹在多模塊程序本節(jié)介紹在多模塊程序中,關于啟動對象的設置、中,關于啟動對象的設置、窗體的加載與卸載、窗體窗體的加載與卸載、窗
17、體的加載與卸載時的事件、的加載與卸載時的事件、多模塊間數(shù)據(jù)的傳遞等。多模塊間數(shù)據(jù)的傳遞等。7.4.1 設置啟動對象設置啟動對象 在程序運行時,首先被加載并執(zhí)行的對象,稱為程序的在程序運行時,首先被加載并執(zhí)行的對象,稱為程序的啟動對象啟動對象。一個程序的啟動對象可以是。一個程序的啟動對象可以是一個窗體一個窗體,也可以,也可以是標準模塊中名為是標準模塊中名為Main的自定義的自定義Sub過程過程。缺省情況下,。缺省情況下,第一個創(chuàng)建的窗體被指定為啟動對象。第一個創(chuàng)建的窗體被指定為啟動對象。1、設置方法: 從“工程”菜單中的最后一項“*屬性” ,在“*工程屬性”對話框中進行設置。 2、如果設置從主過
18、程Main()啟動,則必須在標準模塊中編寫Main()過程代碼。例:Pg 窗體的加載與卸載過程窗體的加載與卸載過程 當一個窗體要顯示在屏幕之前,必須先建立,當一個窗體要顯示在屏幕之前,必須先建立,接著被裝入內存(接著被裝入內存(Load語句語句),最后顯示(),最后顯示(Show方法方法)在屏幕上。同樣,當窗體要結束之前,會)在屏幕上。同樣,當窗體要結束之前,會先從屏幕上隱藏(先從屏幕上隱藏(Hide方法方法),接著從內存中刪),接著從內存中刪除(除(Unload方法方法) 在窗體的加載過程的各階段所用一的語句或方法以在窗體的加載過程的各階段所用一的語句或方法以及所觸發(fā)的事件
19、可用下面的圖來說明:及所觸發(fā)的事件可用下面的圖來說明: 在窗體的卸載過程的各階段所用一的語句或方法以及在窗體的卸載過程的各階段所用一的語句或方法以及所觸發(fā)的事件如下圖:所觸發(fā)的事件如下圖: Unload 語句QueryUnloadUnload1、窗體的加載與顯示、窗體的加載與顯示(1)Load語句:裝入窗體到內存語句:裝入窗體到內存 Load 窗體名稱窗體名稱 說明:執(zhí)行Load語句后,窗體并不顯示出來,但可引用該窗體中的控件及各種屬性。 注意:這里的窗體名稱是窗體的Name屬性, 而不是窗體的文件名,以下相同。(3)Show方法:顯示一個窗體方法:顯示一個窗體 窗體名稱窗體名稱.Show 模式模式 0 Modeless(非模式):可以對其它窗體進行操作 1 Model,關閉才能對其它窗體進行操作。2、窗體的隱藏與卸載窗體的隱藏與卸載 (1)Unload語句:從內存刪除窗體語句:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年邯鄲貨運資格證模擬考試題
- AI算法設計與應用操作手冊
- 食品原料來源可追溯管理系統(tǒng)開發(fā)
- 品味古典詩詞韻味之美-高三古詩文誦讀與賞析教學教案
- 2025年新疆從業(yè)資格證500道題速記
- 江干區(qū)小學英語試卷
- 鎢基高比重合金競爭策略分析報告
- 小學英語買試卷
- 公司承包轉讓合同范本
- 雙方變更合同范本
- 《火力發(fā)電廠水處理技術概述》課件
- 春節(jié)后復工安全培訓課件
- 全國電子工業(yè)版初中信息技術第二冊第2單元2.1活動3《使用云盤備份數(shù)據(jù)》教學設計
- 招標代理服務投標方案(技術標)
- 財務人員防騙技巧培訓課件
- 交替?zhèn)髯g課件外研社王丹
- 《餐飲業(yè)概述》課件 - 探索美食與服務之道
- 2024年哈爾濱電力職業(yè)技術學院高職單招語文歷年參考題庫含答案解析
- 2024年金鑰匙科技知識競賽試題及答案
- 運用HFMEA品管工具優(yōu)化輸血全流程醫(yī)院品質管理案例(血液科輸血科信息科醫(yī)務科護理部)
- 醫(yī)療設備維保投標方案(技術方案)
評論
0/150
提交評論