多重窗體與環(huán)境應(yīng)用.ppt_第1頁(yè)
多重窗體與環(huán)境應(yīng)用.ppt_第2頁(yè)
多重窗體與環(huán)境應(yīng)用.ppt_第3頁(yè)
多重窗體與環(huán)境應(yīng)用.ppt_第4頁(yè)
多重窗體與環(huán)境應(yīng)用.ppt_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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)介

1、第9章 多重窗體與環(huán)境應(yīng)用,9.1 多重窗體,9.2 Visual Basic工程結(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. 向工程中添加窗體 向工程中添加新窗體有以下三種方法: 選擇“工程”“添加窗體”菜單,在打開(kāi)的“添加窗體”對(duì)話框中,選擇“窗體”打開(kāi),即向工程中添加一個(gè)新窗體。新窗體的默認(rèn)名稱和標(biāo)題(Caption屬性)均由集成開(kāi)發(fā)環(huán)境自動(dòng)排列確定,如第二個(gè)創(chuàng)建的窗體,其默認(rèn)的名稱為Form2,標(biāo)題為Form2。 從工具欄上選擇“添加窗體”按鈕,向工程中添加一個(gè)新窗體。 在

2、工程資源管理器中選定“工程”,單擊右鍵打開(kāi)快捷菜單,選則“添加” “添加窗體”選項(xiàng),也可創(chuàng)建一個(gè)新窗體。,2. 移除工程中的窗體 移除工程中多余的窗體有以下兩種方法: 在工程資源管理器窗口中選定要?jiǎng)h除的窗體,選擇“工程”“移除窗體”菜單項(xiàng)。 在工程資源管理器中選中要?jiǎng)h除的窗體,單擊右鍵彈出其快捷菜單,選取“移除窗體”選項(xiàng)。 3. 保存窗體 在多重窗體應(yīng)用程序中,每個(gè)窗體都要單獨(dú)保存,方法同單一窗體應(yīng)用程序一樣。在工程資源管理器窗口中選定要保存的窗體,選擇“文件”“保存窗體”菜單或“窗體另存為”菜單,或者在工程資源管理器中打開(kāi)快捷菜單,選取“保存窗體”或“窗體另存為”選項(xiàng)。每個(gè)窗體保存后都生成一

3、個(gè)擴(kuò)展名為“.frm”的文件。,9.1.2 設(shè)置啟動(dòng)窗體 在多重窗體應(yīng)用程序中,由于應(yīng)用程序由多個(gè)窗體組成,就是由多個(gè)界面組成,因此在程序開(kāi)始運(yùn)行時(shí),必須有一個(gè)窗體是首先出現(xiàn)的,即啟動(dòng)窗體。VB集成開(kāi)發(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ì)象”下拉列表中顯示了該工程所有的窗體和“Sub Main”過(guò)程,用戶可以根據(jù)需要進(jìn)行選擇。若選用Sub Main過(guò)程作為啟動(dòng)對(duì)象,則在程序啟動(dòng)時(shí)不

4、加載任何窗體,而是運(yùn)行一個(gè)Sub Main過(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)行

5、時(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),并占用一定

6、系統(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í),如

7、果窗體沒(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è)窗體,即“歡迎”窗體,“

8、手機(jī)號(hào)碼”窗體和“密碼”窗體。 三個(gè)窗體功能如下: 1.“歡迎”窗體為封面窗體,運(yùn)行時(shí)首先顯示。單擊“單擊此處進(jìn)入”按鈕時(shí),打開(kāi)“手機(jī)號(hào)碼”窗體,“歡迎”窗體消失。,2.在“手機(jī)號(hào)碼”窗體中輸入手機(jī)號(hào)碼后,單擊“確定”按鈕,則打開(kāi)“密碼”窗體,“手機(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ī)的整體。,9.

9、2 Visual Basic工程結(jié)構(gòu),9.2.1 標(biāo)準(zhǔn)模塊,9.2.2 窗體模塊,9.2.3 Sub Main 過(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ú)的

10、標(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)模塊有以下三種方法: 選擇“工程”“添加模塊”菜單,在打開(kāi)的“添加模塊”對(duì)話框中,選擇“模塊”打開(kāi),即向工程中添加一個(gè)標(biāo)準(zhǔn)模塊,標(biāo)準(zhǔn)模塊的默認(rèn)名稱為Module1。 從工具欄上單擊“添加窗體”按鈕右側(cè)的下拉箭頭,在彈出的列表中選擇“添加模塊”選項(xiàng)。 在工程資源管理器中選定“工程”,右擊打開(kāi)快捷菜單,選取“添加”項(xiàng)下的“添加模塊”選項(xiàng),也可創(chuàng)建一個(gè)標(biāo)準(zhǔn)模塊。 創(chuàng)建標(biāo)準(zhǔn)模塊后會(huì)打開(kāi)一個(gè)標(biāo)準(zhǔn)模塊窗口,即可進(jìn)行公共變量、常量、類型、外部過(guò)程和公共過(guò)程

11、的聲明。,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)用

12、,若調(diào)用其它窗體模塊中的過(guò)程,則必須加上過(guò)程所在的窗體名。,9.2.3 Sub Main過(guò)程 Sub Main過(guò)程是在標(biāo)準(zhǔn)模塊中建立的過(guò)程,通常是作為啟動(dòng)過(guò)程編寫的。若選用Sub Main過(guò)程作為啟動(dòng)對(duì)象,則在程序啟動(dòng)時(shí)不加載任何窗體,而是運(yùn)行一個(gè)Sub Main過(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ò)程,如下面的例子所示。,Sub Main() Dim

13、intStatus As Integer 調(diào)用一個(gè)函數(shù)過(guò)程來(lái)檢驗(yàn)用戶狀態(tài) intStatus = GetUserStatus() 根據(jù)狀態(tài)顯示某個(gè)啟動(dòng)窗體 If intStatus = 1 Then frmMain.Show Else frmPassword.Show End If End Sub,需要注意的是,Sub Main過(guò)程必須在標(biāo)準(zhǔn)模塊中創(chuàng)建,不能在窗體模塊內(nèi)。一個(gè)工程可以含有多個(gè)標(biāo)準(zhǔn)模塊,但Sub Main過(guò)程只能有一個(gè)。Sub Main過(guò)程通常是作為啟動(dòng)過(guò)程編寫的,但是Visual Basic并不能夠自動(dòng)識(shí)別Sub Main過(guò)程,也就是說(shuō),并不自動(dòng)把它作為啟動(dòng)過(guò)程。若將 Sub

14、Main 過(guò)程設(shè)為啟動(dòng)對(duì)象,需要選擇“工程”“工程屬性”菜單,在“工程屬性”對(duì)話框中選中“通用”選項(xiàng)卡,在“啟動(dòng)對(duì)象”下拉列表中選定“Sub Main”。,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) Visual Basic 時(shí)所顯示的屏幕就是一個(gè)快速顯示。 當(dāng)一些啟動(dòng)例程正在執(zhí)行時(shí),快速顯示能吸引用戶的注意,造成應(yīng)用程序裝載很快的錯(cuò)覺(jué)。當(dāng)這些啟動(dòng)例程完成后,可以裝載第一個(gè)窗體并卸載快速顯示。對(duì)于快速顯示

15、的設(shè)計(jì),應(yīng)盡量簡(jiǎn)單為好。如果使用大量位圖或者大量控件,則快速顯示本身裝載將會(huì)變慢。,若要顯示快速顯示,需要將Sub Main 過(guò)程作為啟動(dòng)對(duì)象,并用 Show 方法顯示該窗體: Private Sub Main() frmSplash.Show 顯示快速顯示 在此處添加啟動(dòng)過(guò)程。 . . frmMain.Show 顯示主窗體 Unload frmSplash 卸載快速顯示 End Sub,例9.2 設(shè)計(jì)一個(gè)“古詩(shī)選讀”程序,該程序由7個(gè)窗體組成。分別為快速顯示窗體、封面窗體、列表窗體以及4個(gè)用來(lái)顯示古詩(shī)內(nèi)容的窗體。程序運(yùn)行后,在裝載數(shù)據(jù)時(shí)顯示快速顯示窗體,然后顯示封面窗體并卸載快速顯示,接著顯

16、示列表窗體,在該窗體中列出所要閱讀的古詩(shī)目錄(4個(gè)),雙擊某個(gè)目錄后,在另一個(gè)窗體的文本框中顯示相應(yīng)的詩(shī)文內(nèi)容。,9.2.4 閑置循環(huán)與DoEvents語(yǔ)句 Visual Basic屬于事件驅(qū)動(dòng)型語(yǔ)言,即只有當(dāng)發(fā)生某個(gè)事件時(shí),才執(zhí)行相應(yīng)的程序,否則,應(yīng)用程序會(huì)處于“閑置”狀態(tài)。另一方面,當(dāng)Visual Basic執(zhí)行一個(gè)過(guò)程時(shí),將停止對(duì)其它事件(如鼠標(biāo)事件)的處理,直至執(zhí)行完End Sub或End Function指令為止。為了改變這種執(zhí)行順序,VB提供了閑置循環(huán)(Idle Loop)和DoEvents語(yǔ)句。 閑置循環(huán)就是當(dāng)應(yīng)用程序處于閑置狀態(tài)時(shí),用一個(gè)循環(huán)來(lái)執(zhí)行其它操作。簡(jiǎn)言之,閑置循環(huán)就是

17、應(yīng)用程序在閑置狀態(tài)下執(zhí)行的循環(huán)。但執(zhí)行閑置循環(huán)又會(huì)占用全部CPU時(shí)間,不允許執(zhí)行其它事件過(guò)程。為此,Visual Basic提供了一個(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)前裝入Visual Basic應(yīng)用程序工作區(qū)的窗體號(hào),如果不想使用這個(gè)返回值,則可以隨便用一個(gè)變量接收返回值。 DoEvents語(yǔ)句格式為: DoEvents DoEvents函數(shù)格式為: 窗體號(hào) | 變量名=DoEvents(),例9.3 編寫程序,試驗(yàn)閑置循環(huán)和DoEvents語(yǔ)句。 窗體上有一個(gè)標(biāo)簽和兩個(gè)命令按鈕,當(dāng)系統(tǒng)

溫馨提示

  • 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)論