第09章 多重窗體與環(huán)境應(yīng)用.ppt_第1頁
第09章 多重窗體與環(huán)境應(yīng)用.ppt_第2頁
第09章 多重窗體與環(huán)境應(yīng)用.ppt_第3頁
第09章 多重窗體與環(huán)境應(yīng)用.ppt_第4頁
第09章 多重窗體與環(huán)境應(yīng)用.ppt_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第9章多重窗體與環(huán)境應(yīng)用 9 1多重窗體 9 2VisualBasic工程結(jié)構(gòu) 9 1多重窗體 9 1 1多重窗體管理 9 1 2設(shè)置啟動窗體 9 1 3窗體處理 9 1 4多重窗體應(yīng)用實例 9 1 1多重窗體管理1 向工程中添加窗體向工程中添加新窗體有以下三種方法 選擇 工程 添加窗體 菜單 在打開的 添加窗體 對話框中 選擇 窗體 打開 即向工程中添加一個新窗體 新窗體的默認(rèn)名稱和標(biāo)題 Caption屬性 均由集成開發(fā)環(huán)境自動排列確定 如第二個創(chuàng)建的窗體 其默認(rèn)的名稱為Form2 標(biāo)題為Form2 從工具欄上選擇 添加窗體 按鈕 向工程中添加一個新窗體 在工程資源管理器中選定 工程 單擊右鍵打開快捷菜單 選則 添加 添加窗體 選項 也可創(chuàng)建一個新窗體 2 移除工程中的窗體移除工程中多余的窗體有以下兩種方法 在工程資源管理器窗口中選定要刪除的窗體 選擇 工程 移除窗體 菜單項 在工程資源管理器中選中要刪除的窗體 單擊右鍵彈出其快捷菜單 選取 移除窗體 選項 3 保存窗體在多重窗體應(yīng)用程序中 每個窗體都要單獨保存 方法同單一窗體應(yīng)用程序一樣 在工程資源管理器窗口中選定要保存的窗體 選擇 文件 保存窗體 菜單或 窗體另存為 菜單 或者在工程資源管理器中打開快捷菜單 選取 保存窗體 或 窗體另存為 選項 每個窗體保存后都生成一個擴(kuò)展名為 frm 的文件 9 1 2設(shè)置啟動窗體在多重窗體應(yīng)用程序中 由于應(yīng)用程序由多個窗體組成 就是由多個界面組成 因此在程序開始運行時 必須有一個窗體是首先出現(xiàn)的 即啟動窗體 VB集成開發(fā)環(huán)境在創(chuàng)建新工程時 把窗體Form1作為系統(tǒng)缺省的啟動窗體 如果用戶在實際應(yīng)用或在調(diào)試程序中希望把某個窗體作為啟動窗體 在程序運行時首先出現(xiàn)在屏幕上 可用以下方法實現(xiàn) 選擇 工程 工程屬性 菜單 在 工程屬性 對話框中選中 通用 選項卡 在 啟動對象 下拉列表中顯示了該工程所有的窗體和 SubMain 過程 用戶可以根據(jù)需要進(jìn)行選擇 若選用SubMain過程作為啟動對象 則在程序啟動時不加載任何窗體 而是運行一個SubMain過程 然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個窗體 9 1 3窗體處理在使用相關(guān)語句和方法前 大家有必要先了解窗體在應(yīng)用程序中的三種存在形式 沒有被加載 這時 窗體雖然是應(yīng)用程序的構(gòu)件 但并沒有正式成為項目的組成部分 即窗體不會占用系統(tǒng)資源 加載但沒有顯示 這時 窗體已經(jīng)被加載 成為項目的組成部分 但并沒有顯示出來 加載并顯示 這時 窗體已經(jīng)被正式顯示出來 當(dāng)然窗體一定要被加載后才能顯示出來 如果應(yīng)用程序中只有一個窗體 在程序運行時這個窗體會被自動加載并顯示出來 如果應(yīng)用程序由多個窗體組成 則會有一個窗體被設(shè)置為啟動窗體 在程序運行時啟動窗體同樣被自動加載并顯示 而其他的窗體則必須在已經(jīng)啟動的窗體中進(jìn)行加載或顯示 這就要用到下面幾個相關(guān)語句和方法 1 Load語句格式 Load該語句用于將一個窗體裝入內(nèi)存 執(zhí)行Load語句后 窗體處于 加載但沒有顯示 狀態(tài) 此時可以引用窗體中的控件及各種屬性 但窗體沒有顯示出來 2 Unload語句格式 Unload該語句用于卸載內(nèi)存中指定的窗體 與Load語句的功能相反 執(zhí)行Unload語句后 窗體處于 沒有被加載 狀態(tài) 不會占用系統(tǒng)資源 注 應(yīng)用程序結(jié)束后 應(yīng)卸載所有的窗體 否則會出現(xiàn)這種現(xiàn)象 即應(yīng)用程序雖已表現(xiàn)為結(jié)束狀態(tài) 但實際上某個窗體仍處于隱藏狀態(tài) 并占用一定系統(tǒng)資源 Windows系統(tǒng)本身不會自動處理此類問題 這對于程序的運行是極為不利的 為了避免這種情況 應(yīng)在結(jié)束程序前使用Unload語句將窗體從內(nèi)存中刪除 3 Show方法格式 窗體名稱 Show 模式 該方法用于顯示一個窗體 執(zhí)行Show方法后 窗體處于 加載并顯示 狀態(tài) 窗體名稱 可選項 缺省時為當(dāng)前窗體 模式值 可選項 取值0 默認(rèn)值 或1 用以決定窗體是非模態(tài)還是模態(tài) 模式值為0時 窗體為非模態(tài) 此時用戶可對其他窗體進(jìn)行操作 模式值為1時 窗體為模態(tài) 此時用戶不能對其他窗體進(jìn)行操作 直到該窗體關(guān)閉為止 注 該方法兼有裝入和顯示窗體兩種功能 也就是說 在執(zhí)行Show方法時 如果窗體沒有裝入內(nèi)存 則執(zhí)行時Show方法會自動把窗體裝入內(nèi)存 然后顯示出來 4 Hide方法格式 窗體名稱 Hide該方法用于將窗體隱藏起來 執(zhí)行Hide方法后 窗體處于 加載但沒有顯示 狀態(tài) 即窗體仍在內(nèi)存中 但窗體沒有顯示出來 與窗體卸載有本質(zhì)的區(qū)別 9 1 4多重窗體應(yīng)用實例和單一窗體的程序設(shè)計一樣 多重窗體程序設(shè)計也基本上分為5步 設(shè)計界面 設(shè)置屬性 編寫代碼 調(diào)試運行 保存程序 關(guān)鍵的問題是作為一個完整的工程 如何把多個窗體 組裝 起來 并根據(jù)程序功能實現(xiàn)窗體間的切換 下面通過一個簡單的例子進(jìn)行說明 例9 1設(shè)計一個手機(jī)話費查詢系統(tǒng) 包含三個窗體 即 歡迎 窗體 手機(jī)號碼 窗體和 密碼 窗體 三個窗體功能如下 1 歡迎 窗體為封面窗體 運行時首先顯示 單擊 單擊此處進(jìn)入 按鈕時 打開 手機(jī)號碼 窗體 歡迎 窗體消失 2 在 手機(jī)號碼 窗體中輸入手機(jī)號碼后 單擊 確定 按鈕 則打開 密碼 窗體 手機(jī)號碼 窗體消失 若單擊 返回 按鈕 則返回 歡迎 窗體 3 在 密碼 窗體中輸入密碼后 單擊 確定 按鈕 只要密碼非空則顯示剩余話費 若單擊 查詢下一個 按鈕 則返回 手機(jī)號碼 窗體 若單擊 返回 按鈕 則返回 歡迎 窗體 通過該例可以發(fā)現(xiàn) 多重窗體應(yīng)用程序中 通過相關(guān)按鈕的設(shè)置 實現(xiàn)窗體的顯示與隱藏 從而將多個窗體連接成一個有機(jī)的整體 第一個窗體 第二個窗體 第三個窗體 Form1代碼 PrivateSubCommand1 Click Form2 ShowForm1 HideEndSub PrivateSubCommand1 Click IfText1 Text ThenForm3 Show Form2 HideEndSubPrivateSubCommand2 Click Form1 ShowForm2 HideEndSub Form2代碼 PrivateSubCommand1 Click IfText1 Text ThenText2 Text 話費 EndSubPrivateSubCommand2 Click Form2 ShowForm3 HideEndSubPrivateSubCommand3 Click Form1 ShowForm3 HideEndSub Form3代碼 9 2VisualBasic工程結(jié)構(gòu) 9 2 1標(biāo)準(zhǔn)模塊 9 2 2窗體模塊 9 2 3SubMain過程 9 2 4閑置循環(huán)與DoEvents語句 9 2 1標(biāo)準(zhǔn)模塊在單一窗體應(yīng)用程序中 所有的代碼都存放在一個窗體模塊中 而在多重窗體應(yīng)用程序中 每個窗體對應(yīng)一個窗體模塊 有些公共變量或通用過程需要在多個窗體中共用 這就需要創(chuàng)建標(biāo)準(zhǔn)模塊 標(biāo)準(zhǔn)模塊由全局變量聲明 模塊級聲明及通用過程等幾部分組成 標(biāo)準(zhǔn)模塊文件的擴(kuò)展名為 bas 在標(biāo)準(zhǔn)模塊中 全局變量用Public聲明 模塊級變量用Dim或Private聲明 當(dāng)需要聲明的全局變量或常量較多時 可以把全局變量聲明放在一個單獨的標(biāo)準(zhǔn)模塊中 一個工程文件可以包含多個標(biāo)準(zhǔn)模塊 也可以把原有的標(biāo)準(zhǔn)模塊加入工程中 當(dāng)一個工程中含有多個標(biāo)準(zhǔn)模塊時 各模塊中的過程不能重名 向工程中添加標(biāo)準(zhǔn)模塊有以下三種方法 選擇 工程 添加模塊 菜單 在打開的 添加模塊 對話框中 選擇 模塊 打開 即向工程中添加一個標(biāo)準(zhǔn)模塊 標(biāo)準(zhǔn)模塊的默認(rèn)名稱為Module1 從工具欄上單擊 添加窗體 按鈕右側(cè)的下拉箭頭 在彈出的列表中選擇 添加模塊 選項 在工程資源管理器中選定 工程 右擊打開快捷菜單 選取 添加 項下的 添加模塊 選項 也可創(chuàng)建一個標(biāo)準(zhǔn)模塊 創(chuàng)建標(biāo)準(zhǔn)模塊后會打開一個標(biāo)準(zhǔn)模塊窗口 即可進(jìn)行公共變量 常量 類型 外部過程和公共過程的聲明 9 2 2窗體模塊應(yīng)用程序中的每個窗體都有一個包含其代碼的窗體模塊 窗體模塊包括3部分內(nèi)容 即通用聲明部分 通用過程部分和事件過程部分 窗體模塊文件的擴(kuò)展名為 frm 如果在文本編輯器中觀察窗體模塊 則還會看到窗體及其控件的描述 包括它們的屬性設(shè)置值 在窗體模塊的通用聲明部分中 用Dim語句聲明的變量 其作用域為整個窗體模塊 即該模塊中的所有過程 通用聲明部分一般放在代碼的最前面 而通用過程和事件過程的位置沒有嚴(yán)格的限制 在窗體模塊中 可以調(diào)用標(biāo)準(zhǔn)模塊中的過程 也可以調(diào)用其它窗體模塊中的過程 注意 被調(diào)用的過程必須用Public定義為公共過程 標(biāo)準(zhǔn)模塊中的過程 可直接調(diào)用 若調(diào)用其它窗體模塊中的過程 則必須加上過程所在的窗體名 9 2 3SubMain過程SubMain過程是在標(biāo)準(zhǔn)模塊中建立的過程 通常是作為啟動過程編寫的 若選用SubMain過程作為啟動對象 則在程序啟動時不加載任何窗體 而是運行一個SubMain過程 然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個窗體 1 沒有啟動窗體時的啟動有時候也許需要應(yīng)用程序啟動時不加載任何窗體 例如 可能想先運行裝入數(shù)據(jù)文件的代碼 然后根據(jù)數(shù)據(jù)文件的內(nèi)容決定顯示幾個不同窗體中的哪一個 要做到這一點 可以在標(biāo)準(zhǔn)模塊中創(chuàng)建一個名為Main的子過程 如下面的例子所示 SubMain DimintStatusAsInteger 調(diào)用一個函數(shù)過程來檢驗用戶狀態(tài)intStatus GetUserStatus 根據(jù)狀態(tài)顯示某個啟動窗體IfintStatus 1ThenfrmMain ShowElsefrmPassword ShowEndIfEndSub 需要注意的是 SubMain過程必須在標(biāo)準(zhǔn)模塊中創(chuàng)建 不能在窗體模塊內(nèi) 一個工程可以含有多個標(biāo)準(zhǔn)模塊 但SubMain過程只能有一個 SubMain過程通常是作為啟動過程編寫的 但是VisualBasic并不能夠自動識別SubMain過程 也就是說 并不自動把它作為啟動過程 若將SubMain過程設(shè)為啟動對象 需要選擇 工程 工程屬性 菜單 在 工程屬性 對話框中選中 通用 選項卡 在 啟動對象 下拉列表中選定 SubMain 2 顯示啟動時的快速顯示如果啟動時有一個較長的執(zhí)行過程 例如要從數(shù)據(jù)庫中裝入大量數(shù)據(jù)或者要裝入一些大型位圖 這時可能希望在啟動時給出一個快速顯示 快速顯示是一個窗體 它通常顯示的是諸如應(yīng)用程序名 版權(quán)信息和一個簡單的位圖等內(nèi)容 啟動VisualBasic時所顯示的屏幕就是一個快速顯示 當(dāng)一些啟動例程正在執(zhí)行時 快速顯示能吸引用戶的注意 造成應(yīng)用程序裝載很快的錯覺 當(dāng)這些啟動例程完成后 可以裝載第一個窗體并卸載快速顯示 對于快速顯示的設(shè)計 應(yīng)盡量簡單為好 如果使用大量位圖或者大量控件 則快速顯示本身裝載將會變慢 若要顯示快速顯示 需要將SubMain過程作為啟動對象 并用Show方法顯示該窗體 PrivateSubMain frmSplash Show 顯示快速顯示 在此處添加啟動過程 frmMain Show 顯示主窗體UnloadfrmSplash 卸載快速顯示EndSub 例9 2設(shè)計一個 古詩選讀 程序 該程序由7個窗體組成 分別為快速顯示窗體 封面窗體 列表窗體以及4個用來顯示古詩內(nèi)容的窗體 程序運行后 在裝載數(shù)據(jù)時顯示快速顯示窗體 然后顯示封面窗體并卸載快速顯示 接著顯示列表窗體 在該窗體中列出所要閱讀的古詩目錄 4個 雙擊某個目錄后 在另一個窗體的文本框中顯示相應(yīng)的詩文內(nèi)容 9 2 4閑置循環(huán)與DoEvents語句VisualBasic屬于事件驅(qū)動型語言 即只有當(dāng)發(fā)生某個事件時 才執(zhí)行相應(yīng)的程序 否則 應(yīng)用程序會處于 閑置 狀態(tài) 另一方面 當(dāng)VisualBasic執(zhí)行一個過程時 將停止對其它事件 如鼠標(biāo)事件 的處理 直至執(zhí)行完EndSub或EndFunction指令為止 為了改變這種執(zhí)行順序 VB提供了閑置循環(huán) IdleLoop 和DoEvents語句 閑置循環(huán)就是當(dāng)應(yīng)用程序處于閑置狀態(tài)時 用一個循環(huán)來執(zhí)行其它操作 簡言之 閑置循環(huán)就是應(yīng)用程序在閑置狀態(tài)下執(zhí)行的循環(huán) 但執(zhí)行閑置循環(huán)又會占用全部CPU時間 不允許執(zhí)行其它事件過程 為此 VisualBasic提供了一個DoEvents語句 無論何時 一執(zhí)行到DoEvents語句 就會把系統(tǒng)的控制權(quán)交給周圍環(huán)境使用 然后再回到原來程序繼續(xù)執(zhí)行 DoEvents既可以作為語句使用 也可以作為函數(shù)使用 作為函數(shù)使用時 返回值為當(dāng)前裝入VisualBasic應(yīng)用程序工作區(qū)的窗體號 如果不想使用這個返回值 則可以隨便用一個變量接收返回值 DoEvents語句格式為 DoEventsDoEvents函數(shù)格式為 窗體號 變量名 DoEvents 例9 3編寫程序 試驗閑置循環(huán)和DoEvents語句 窗體上

溫馨提示

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

評論

0/150

提交評論