版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第9章 多重窗體與環(huán)境應用,9.1 多重窗體,9.2 Visual Basic工程結(jié)構(gòu),9.1 多重窗體,9.1.1 多重窗體管理,9.1.2 設(shè)置啟動窗體,9.1.3 窗體處理,9.1.4 多重窗體應用實例,9.1.1 多重窗體管理 1. 向工程中添加窗體 向工程中添加新窗體有以下三種方法: 選擇“工程”“添加窗體”菜單,在打開的“添加窗體”對話框中,選擇“窗體”打開,即向工程中添加一個新窗體。新窗體的默認名稱和標題(Caption屬性)均由集成開發(fā)環(huán)境自動排列確定,如第二個創(chuàng)建的窗體,其默認的名稱為Form2,標題為Form2。 從工具欄上選擇“添加窗體”按鈕,向工程中添加一個新窗體。 在
2、工程資源管理器中選定“工程”,單擊右鍵打開快捷菜單,選則“添加” “添加窗體”選項,也可創(chuàng)建一個新窗體。,2. 移除工程中的窗體 移除工程中多余的窗體有以下兩種方法: 在工程資源管理器窗口中選定要刪除的窗體,選擇“工程”“移除窗體”菜單項。 在工程資源管理器中選中要刪除的窗體,單擊右鍵彈出其快捷菜單,選取“移除窗體”選項。 3. 保存窗體 在多重窗體應用程序中,每個窗體都要單獨保存,方法同單一窗體應用程序一樣。在工程資源管理器窗口中選定要保存的窗體,選擇“文件”“保存窗體”菜單或“窗體另存為”菜單,或者在工程資源管理器中打開快捷菜單,選取“保存窗體”或“窗體另存為”選項。每個窗體保存后都生成一
3、個擴展名為“.frm”的文件。,9.1.2 設(shè)置啟動窗體 在多重窗體應用程序中,由于應用程序由多個窗體組成,就是由多個界面組成,因此在程序開始運行時,必須有一個窗體是首先出現(xiàn)的,即啟動窗體。VB集成開發(fā)環(huán)境在創(chuàng)建新工程時,把窗體Form1作為系統(tǒng)缺省的啟動窗體。如果用戶在實際應用或在調(diào)試程序中希望把某個窗體作為啟動窗體,在程序運行時首先出現(xiàn)在屏幕上,可用以下方法實現(xiàn): 選擇“工程”“工程屬性”菜單,在“工程屬性”對話框中選中“通用”選項卡。在“啟動對象”下拉列表中顯示了該工程所有的窗體和“Sub Main”過程,用戶可以根據(jù)需要進行選擇。若選用Sub Main過程作為啟動對象,則在程序啟動時不
4、加載任何窗體,而是運行一個Sub Main過程,然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個窗體。,9.1.3 窗體處理 在使用相關(guān)語句和方法前,大家有必要先了解窗體在應用程序中的三種存在形式: 沒有被加載:這時,窗體雖然是應用程序的構(gòu)件,但并沒有正式成為項目的組成部分,即窗體不會占用系統(tǒng)資源。 加載但沒有顯示:這時,窗體已經(jīng)被加載,成為項目的組成部分,但并沒有顯示出來。 加載并顯示:這時,窗體已經(jīng)被正式顯示出來,當然窗體一定要被加載后才能顯示出來。,如果應用程序中只有一個窗體,在程序運行時這個窗體會被自動加載并顯示出來。如果應用程序由多個窗體組成,則會有一個窗體被設(shè)置為啟動窗體。在程序運行
5、時啟動窗體同樣被自動加載并顯示,而其他的窗體則必須在已經(jīng)啟動的窗體中進行加載或顯示,這就要用到下面幾個相關(guān)語句和方法。 1. Load語句 格式:Load 該語句用于將一個窗體裝入內(nèi)存。執(zhí)行Load語句后,窗體處于“加載但沒有顯示”狀態(tài),此時可以引用窗體中的控件及各種屬性,但窗體沒有顯示出來。,2. Unload語句 格式:Unload 該語句用于卸載內(nèi)存中指定的窗體,與Load語句的功能相反。執(zhí)行Unload語句后,窗體處于“沒有被加載”狀態(tài),不會占用系統(tǒng)資源。 注:應用程序結(jié)束后,應卸載所有的窗體,否則會出現(xiàn)這種現(xiàn)象,即應用程序雖已表現(xiàn)為結(jié)束狀態(tài),但實際上某個窗體仍處于隱藏狀態(tài),并占用一定
6、系統(tǒng)資源。Windows系統(tǒng)本身不會自動處理此類問題,這對于程序的運行是極為不利的。為了避免這種情況,應在結(jié)束程序前使用Unload語句將窗體從內(nèi)存中刪除。,3. Show方法 格式:窗體名稱.Show 模式 該方法用于顯示一個窗體。執(zhí)行Show方法后,窗體處于“加載并顯示”狀態(tài)。 窗體名稱:可選項,缺省時為當前窗體。 模式值:可選項,取值0(默認值)或1,用以決定窗體是非模態(tài)還是模態(tài)。模式值為0時,窗體為非模態(tài),此時用戶可對其他窗體進行操作;模式值為1時,窗體為模態(tài),此時用戶不能對其他窗體進行操作,直到該窗體關(guān)閉為止。 注:該方法兼有裝入和顯示窗體兩種功能。也就是說,在執(zhí)行Show方法時,如
7、果窗體沒有裝入內(nèi)存,則執(zhí)行時Show方法會自動把窗體裝入內(nèi)存,然后顯示出來。,4. Hide方法 格式:窗體名稱.Hide 該方法用于將窗體隱藏起來。執(zhí)行Hide方法后,窗體處于“加載但沒有顯示”狀態(tài),即窗體仍在內(nèi)存中,但窗體沒有顯示出來,與窗體卸載有本質(zhì)的區(qū)別。,9.1.4 多重窗體應用實例 和單一窗體的程序設(shè)計一樣,多重窗體程序設(shè)計也基本上分為5步:設(shè)計界面、設(shè)置屬性、編寫代碼、調(diào)試運行、保存程序。關(guān)鍵的問題是作為一個完整的工程,如何把多個窗體“組裝”起來,并根據(jù)程序功能實現(xiàn)窗體間的切換。下面通過一個簡單的例子進行說明。 例9.1 設(shè)計一個手機話費查詢系統(tǒng),包含三個窗體,即“歡迎”窗體,“
8、手機號碼”窗體和“密碼”窗體。 三個窗體功能如下: 1.“歡迎”窗體為封面窗體,運行時首先顯示。單擊“單擊此處進入”按鈕時,打開“手機號碼”窗體,“歡迎”窗體消失。,2.在“手機號碼”窗體中輸入手機號碼后,單擊“確定”按鈕,則打開“密碼”窗體,“手機號碼”窗體消失;若單擊“返回”按鈕,則返回“歡迎”窗體。 3.在“密碼”窗體中輸入密碼后,單擊“確定”按鈕,只要密碼非空則顯示剩余話費;若單擊“查詢下一個”按鈕,則返回“手機號碼”窗體;若單擊“返回”按鈕,則返回“歡迎”窗體。 通過該例可以發(fā)現(xiàn),多重窗體應用程序中,通過相關(guān)按鈕的設(shè)置,實現(xiàn)窗體的顯示與隱藏,從而將多個窗體連接成一個有機的整體。,9.
9、2 Visual Basic工程結(jié)構(gòu),9.2.1 標準模塊,9.2.2 窗體模塊,9.2.3 Sub Main 過程,9.2.4 閑置循環(huán)與DoEvents語句,9.2.1 標準模塊 在單一窗體應用程序中,所有的代碼都存放在一個窗體模塊中,而在多重窗體應用程序中,每個窗體對應一個窗體模塊,有些公共變量或通用過程需要在多個窗體中共用,這就需要創(chuàng)建標準模塊。標準模塊由全局變量聲明、模塊級聲明及通用過程等幾部分組成,標準模塊文件的擴展名為“.bas”。 在標準模塊中,全局變量用Public聲明,模塊級變量用Dim或Private聲明。當需要聲明的全局變量或常量較多時,可以把全局變量聲明放在一個單獨的
10、標準模塊中。一個工程文件可以包含多個標準模塊,也可以把原有的標準模塊加入工程中。當一個工程中含有多個標準模塊時,各模塊中的過程不能重名。,向工程中添加標準模塊有以下三種方法: 選擇“工程”“添加模塊”菜單,在打開的“添加模塊”對話框中,選擇“模塊”打開,即向工程中添加一個標準模塊,標準模塊的默認名稱為Module1。 從工具欄上單擊“添加窗體”按鈕右側(cè)的下拉箭頭,在彈出的列表中選擇“添加模塊”選項。 在工程資源管理器中選定“工程”,右擊打開快捷菜單,選取“添加”項下的“添加模塊”選項,也可創(chuàng)建一個標準模塊。 創(chuàng)建標準模塊后會打開一個標準模塊窗口,即可進行公共變量、常量、類型、外部過程和公共過程
11、的聲明。,9.2.2 窗體模塊 應用程序中的每個窗體都有一個包含其代碼的窗體模塊。窗體模塊包括3部分內(nèi)容,即通用聲明部分、通用過程部分和事件過程部分,窗體模塊文件的擴展名為“.frm”。如果在文本編輯器中觀察窗體模塊,則還會看到窗體及其控件的描述,包括它們的屬性設(shè)置值。 在窗體模塊的通用聲明部分中,用Dim語句聲明的變量,其作用域為整個窗體模塊,即該模塊中的所有過程。通用聲明部分一般放在代碼的最前面,而通用過程和事件過程的位置沒有嚴格的限制。,在窗體模塊中,可以調(diào)用標準模塊中的過程,也可以調(diào)用其它窗體模塊中的過程。注意,被調(diào)用的過程必須用Public定義為公共過程。標準模塊中的過程,可直接調(diào)用
12、,若調(diào)用其它窗體模塊中的過程,則必須加上過程所在的窗體名。,9.2.3 Sub Main過程 Sub Main過程是在標準模塊中建立的過程,通常是作為啟動過程編寫的。若選用Sub Main過程作為啟動對象,則在程序啟動時不加載任何窗體,而是運行一個Sub Main過程,然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個窗體。 1.沒有啟動窗體時的啟動 有時候也許需要應用程序啟動時不加載任何窗體。例如:可能想先運行裝入數(shù)據(jù)文件的代碼,然后根據(jù)數(shù)據(jù)文件的內(nèi)容決定顯示幾個不同窗體中的哪一個。要做到這一點,可以在標準模塊中創(chuàng)建一個名為 Main 的子過程,如下面的例子所示。,Sub Main() Dim
13、intStatus As Integer 調(diào)用一個函數(shù)過程來檢驗用戶狀態(tài) intStatus = GetUserStatus() 根據(jù)狀態(tài)顯示某個啟動窗體 If intStatus = 1 Then frmMain.Show Else frmPassword.Show End If End Sub,需要注意的是,Sub Main過程必須在標準模塊中創(chuàng)建,不能在窗體模塊內(nèi)。一個工程可以含有多個標準模塊,但Sub Main過程只能有一個。Sub Main過程通常是作為啟動過程編寫的,但是Visual Basic并不能夠自動識別Sub Main過程,也就是說,并不自動把它作為啟動過程。若將 Sub
14、Main 過程設(shè)為啟動對象,需要選擇“工程”“工程屬性”菜單,在“工程屬性”對話框中選中“通用”選項卡,在“啟動對象”下拉列表中選定“Sub Main”。,2.顯示啟動時的快速顯示 如果啟動時有一個較長的執(zhí)行過程,例如要從數(shù)據(jù)庫中裝入大量數(shù)據(jù)或者要裝入一些大型位圖,這時可能希望在啟動時給出一個快速顯示。快速顯示是一個窗體,它通常顯示的是諸如應用程序名,版權(quán)信息和一個簡單的位圖等內(nèi)容。啟動 Visual Basic 時所顯示的屏幕就是一個快速顯示。 當一些啟動例程正在執(zhí)行時,快速顯示能吸引用戶的注意,造成應用程序裝載很快的錯覺。當這些啟動例程完成后,可以裝載第一個窗體并卸載快速顯示。對于快速顯示
15、的設(shè)計,應盡量簡單為好。如果使用大量位圖或者大量控件,則快速顯示本身裝載將會變慢。,若要顯示快速顯示,需要將Sub Main 過程作為啟動對象,并用 Show 方法顯示該窗體: Private Sub Main() frmSplash.Show 顯示快速顯示 在此處添加啟動過程。 . . frmMain.Show 顯示主窗體 Unload frmSplash 卸載快速顯示 End Sub,例9.2 設(shè)計一個“古詩選讀”程序,該程序由7個窗體組成。分別為快速顯示窗體、封面窗體、列表窗體以及4個用來顯示古詩內(nèi)容的窗體。程序運行后,在裝載數(shù)據(jù)時顯示快速顯示窗體,然后顯示封面窗體并卸載快速顯示,接著顯
16、示列表窗體,在該窗體中列出所要閱讀的古詩目錄(4個),雙擊某個目錄后,在另一個窗體的文本框中顯示相應的詩文內(nèi)容。,9.2.4 閑置循環(huán)與DoEvents語句 Visual Basic屬于事件驅(qū)動型語言,即只有當發(fā)生某個事件時,才執(zhí)行相應的程序,否則,應用程序會處于“閑置”狀態(tài)。另一方面,當Visual Basic執(zhí)行一個過程時,將停止對其它事件(如鼠標事件)的處理,直至執(zhí)行完End Sub或End Function指令為止。為了改變這種執(zhí)行順序,VB提供了閑置循環(huán)(Idle Loop)和DoEvents語句。 閑置循環(huán)就是當應用程序處于閑置狀態(tài)時,用一個循環(huán)來執(zhí)行其它操作。簡言之,閑置循環(huán)就是
17、應用程序在閑置狀態(tài)下執(zhí)行的循環(huán)。但執(zhí)行閑置循環(huán)又會占用全部CPU時間,不允許執(zhí)行其它事件過程。為此,Visual Basic提供了一個DoEvents語句,無論何時,一執(zhí)行到DoEvents語句,就會把系統(tǒng)的控制權(quán)交給周圍環(huán)境使用,然后再回到原來程序繼續(xù)執(zhí)行。,DoEvents既可以作為語句使用,也可以作為函數(shù)使用。作為函數(shù)使用時,返回值為當前裝入Visual Basic應用程序工作區(qū)的窗體號,如果不想使用這個返回值,則可以隨便用一個變量接收返回值。 DoEvents語句格式為: DoEvents DoEvents函數(shù)格式為: 窗體號 | 變量名=DoEvents(),例9.3 編寫程序,試驗閑置循環(huán)和DoEvents語句。 窗體上有一個標簽和兩個命令按鈕,當系統(tǒng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 巖棉防火隔離帶施工工藝
- 2024年渭南職業(yè)技術(shù)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 洗地機行業(yè)供需現(xiàn)狀與發(fā)展戰(zhàn)略規(guī)劃
- 2024年淄博師范高等專科學校高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2017-民族區(qū)域自治制度:適合國情基本政治制度
- 2024年浙江長征職業(yè)技術(shù)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 2024年浙江經(jīng)濟職業(yè)技術(shù)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 商易通業(yè)務基本介紹講義資料
- 2024年浙江機電職業(yè)技術(shù)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 4¥-four(天津科技大學)
- 提高膿毒性休克患者1h集束化措施落實率
- 山東省濟南市天橋區(qū)2024-2025學年八年級數(shù)學上學期期中考試試題
- 主播mcn合同模板
- 2024年人教版八年級語文上冊期末考試卷(附答案)
- 2024測繪個人年終工作總結(jié)
- 遼寧省大連市2023-2024學年高三上學期雙基測試(期末考試) 物理 含解析
- 勞務分包的工程施工組織設(shè)計方案
- DB11 637-2015 房屋結(jié)構(gòu)綜合安全性鑒定標準
- 18項醫(yī)療質(zhì)量安全核心制度
- 制造業(yè)生產(chǎn)流程作業(yè)指導書
- DB34∕T 4444-2023 企業(yè)信息化系統(tǒng)上云評估服務規(guī)范
評論
0/150
提交評論