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

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論