




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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章多重窗體與環(huán)境應(yīng)用9.1多重窗體9.2Vi19.1多重窗體
9.1.1多重窗體管理
9.1.2設(shè)置啟動(dòng)窗體
9.1.3窗體處理
9.1.4多重窗體應(yīng)用實(shí)例
9.1多重窗體9.1.1多重窗體管理29.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è)新窗體。9.1.1多重窗體管理32.移除工程中的窗體移除工程中多余的窗體有以下兩種方法:⑴在工程資源管理器窗口中選定要?jiǎng)h除的窗體,選擇“工程”→“移除窗體”菜單項(xiàng)。⑵在工程資源管理器中選中要?jiǎng)h除的窗體,單擊右鍵彈出其快捷菜單,選取“移除窗體”選項(xiàng)。3.保存窗體在多重窗體應(yīng)用程序中,每個(gè)窗體都要單獨(dú)保存,方法同單一窗體應(yīng)用程序一樣。在工程資源管理器窗口中選定要保存的窗體,選擇“文件”→“保存窗體”菜單或“窗體另存為”菜單,或者在工程資源管理器中打開快捷菜單,選取“保存窗體”或“窗體另存為”選項(xiàng)。每個(gè)窗體保存后都生成一個(gè)擴(kuò)展名為“.frm”的文件。2.移除工程中的窗體49.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”過程,用戶可以根據(jù)需要進(jìn)行選擇。若選用SubMain過程作為啟動(dòng)對(duì)象,則在程序啟動(dòng)時(shí)不加載任何窗體,而是運(yùn)行一個(gè)SubMain過程,然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個(gè)窗體。9.1.2設(shè)置啟動(dòng)窗體59.1.3窗體處理在使用相關(guān)語句和方法前,大家有必要先了解窗體在應(yīng)用程序中的三種存在形式:沒有被加載:這時(shí),窗體雖然是應(yīng)用程序的構(gòu)件,但并沒有正式成為項(xiàng)目的組成部分,即窗體不會(huì)占用系統(tǒng)資源。加載但沒有顯示:這時(shí),窗體已經(jīng)被加載,成為項(xiàng)目的組成部分,但并沒有顯示出來。加載并顯示:這時(shí),窗體已經(jīng)被正式顯示出來,當(dāng)然窗體一定要被加載后才能顯示出來。9.1.3窗體處理6如果應(yīng)用程序中只有一個(gè)窗體,在程序運(yùn)行時(shí)這個(gè)窗體會(huì)被自動(dòng)加載并顯示出來。如果應(yīng)用程序由多個(gè)窗體組成,則會(huì)有一個(gè)窗體被設(shè)置為啟動(dòng)窗體。在程序運(yùn)行時(shí)啟動(dòng)窗體同樣被自動(dòng)加載并顯示,而其他的窗體則必須在已經(jīng)啟動(dòng)的窗體中進(jìn)行加載或顯示,這就要用到下面幾個(gè)相關(guān)語句和方法。1.Load語句格式:Load<窗體名稱>該語句用于將一個(gè)窗體裝入內(nèi)存。執(zhí)行Load語句后,窗體處于“加載但沒有顯示”狀態(tài),此時(shí)可以引用窗體中的控件及各種屬性,但窗體沒有顯示出來。如果應(yīng)用程序中只有一個(gè)窗體,在程序運(yùn)行時(shí)這個(gè)72.Unload語句格式:Unload<窗體名稱>該語句用于卸載內(nèi)存中指定的窗體,與Load語句的功能相反。執(zhí)行Unload語句后,窗體處于“沒有被加載”狀態(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)處理此類問題,這對(duì)于程序的運(yùn)行是極為不利的。為了避免這種情況,應(yīng)在結(jié)束程序前使用Unload語句將窗體從內(nèi)存中刪除。2.Unload語句83.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)閉為止。注:該方法兼有裝入和顯示窗體兩種功能。也就是說,在執(zhí)行Show方法時(shí),如果窗體沒有裝入內(nèi)存,則執(zhí)行時(shí)Show方法會(huì)自動(dòng)把窗體裝入內(nèi)存,然后顯示出來。3.Show方法94.Hide方法格式:[窗體名稱].Hide該方法用于將窗體隱藏起來。執(zhí)行Hide方法后,窗體處于“加載但沒有顯示”狀態(tài),即窗體仍在內(nèi)存中,但窗體沒有顯示出來,與窗體卸載有本質(zhì)的區(qū)別。4.Hide方法109.1.4多重窗體應(yīng)用實(shí)例和單一窗體的程序設(shè)計(jì)一樣,多重窗體程序設(shè)計(jì)也基本上分為5步:設(shè)計(jì)界面、設(shè)置屬性、編寫代碼、調(diào)試運(yùn)行、保存程序。關(guān)鍵的問題是作為一個(gè)完整的工程,如何把多個(gè)窗體“組裝”起來,并根據(jù)程序功能實(shí)現(xiàn)窗體間的切換。下面通過一個(gè)簡(jiǎn)單的例子進(jìn)行說明。例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)碼”窗體,“歡迎”窗體消失。9.1.4多重窗體應(yīng)用實(shí)例112.在“手機(jī)號(hào)碼”窗體中輸入手機(jī)號(hào)碼后,單擊“確定”按鈕,則打開“密碼”窗體,“手機(jī)號(hào)碼”窗體消失;若單擊“返回”按鈕,則返回“歡迎”窗體。3.在“密碼”窗體中輸入密碼后,單擊“確定”按鈕,只要密碼非空則顯示剩余話費(fèi);若單擊“查詢下一個(gè)”按鈕,則返回“手機(jī)號(hào)碼”窗體;若單擊“返回”按鈕,則返回“歡迎”窗體。通過該例可以發(fā)現(xiàn),多重窗體應(yīng)用程序中,通過相關(guān)按鈕的設(shè)置,實(shí)現(xiàn)窗體的顯示與隱藏,從而將多個(gè)窗體連接成一個(gè)有機(jī)的整體。2.在“手機(jī)號(hào)碼”窗體中輸入手機(jī)號(hào)碼后,單擊“確定”按鈕,則12第一個(gè)窗體第一個(gè)窗體13第二個(gè)窗體第二個(gè)窗體14第三個(gè)窗體第三個(gè)窗體15Form1代碼:PrivateSubCommand1_Click()Form2.ShowForm1.HideEndSubForm1代碼:PrivateSubCommand1_C16PrivateSubCommand1_Click()IfText1.Text<>""ThenForm3.Show:Form2.HideEndSubPrivateSubCommand2_Click()Form1.ShowForm2.HideEndSubForm2代碼:PrivateSubCommand1_Click()Fo17PrivateSubCommand1_Click()IfText1.Text<>""ThenText2.Text="話費(fèi)"EndSubPrivateSubCommand2_Click()Form2.ShowForm3.HideEndSubPrivateSubCommand3_Click()Form1.ShowForm3.HideEndSubForm3代碼:PrivateSubCommand1_Click()Fo189.2VisualBasic工程結(jié)構(gòu)
9.2.1標(biāo)準(zhǔn)模塊
9.2.2窗體模塊
9.2.3SubMain過程9.2.4閑置循環(huán)與DoEvents語句9.2VisualBasic工程結(jié)構(gòu)9199.2.1標(biāo)準(zhǔn)模塊
在單一窗體應(yīng)用程序中,所有的代碼都存放在一個(gè)窗體模塊中,而在多重窗體應(yīng)用程序中,每個(gè)窗體對(duì)應(yīng)一個(gè)窗體模塊,有些公共變量或通用過程需要在多個(gè)窗體中共用,這就需要?jiǎng)?chuàng)建標(biāo)準(zhǔn)模塊。標(biāo)準(zhǔn)模塊由全局變量聲明、模塊級(jí)聲明及通用過程等幾部分組成,標(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í),各模塊中的過程不能重名。9.2.1標(biāo)準(zhǔn)模塊20向工程中添加標(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)行公共變量、常量、類型、外部過程和公共過程的聲明。向工程中添加標(biāo)準(zhǔn)模塊有以下三種方法:219.2.2窗體模塊應(yīng)用程序中的每個(gè)窗體都有一個(gè)包含其代碼的窗體模塊。窗體模塊包括3部分內(nèi)容,即通用聲明部分、通用過程部分和事件過程部分,窗體模塊文件的擴(kuò)展名為“.frm”。如果在文本編輯器中觀察窗體模塊,則還會(huì)看到窗體及其控件的描述,包括它們的屬性設(shè)置值。在窗體模塊的通用聲明部分中,用Dim語句聲明的變量,其作用域?yàn)檎麄€(gè)窗體模塊,即該模塊中的所有過程。通用聲明部分一般放在代碼的最前面,而通用過程和事件過程的位置沒有嚴(yán)格的限制。9.2.2窗體模塊22在窗體模塊中,可以調(diào)用標(biāo)準(zhǔn)模塊中的過程,也可以調(diào)用其它窗體模塊中的過程。注意,被調(diào)用的過程必須用Public定義為公共過程。標(biāo)準(zhǔn)模塊中的過程,可直接調(diào)用,若調(diào)用其它窗體模塊中的過程,則必須加上過程所在的窗體名。在窗體模塊中,可以調(diào)用標(biāo)準(zhǔn)模塊中的過程,也可239.2.3SubMain過程SubMain過程是在標(biāo)準(zhǔn)模塊中建立的過程,通常是作為啟動(dòng)過程編寫的。若選用SubMain過程作為啟動(dòng)對(duì)象,則在程序啟動(dòng)時(shí)不加載任何窗體,而是運(yùn)行一個(gè)SubMain過程,然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個(gè)窗體。1.沒有啟動(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的子過程,如下面的例子所示。9.2.3SubMain過程24SubMain()DimintStatusAsInteger'調(diào)用一個(gè)函數(shù)過程來檢驗(yàn)用戶狀態(tài)intStatus=GetUserStatus()'根據(jù)狀態(tài)顯示某個(gè)啟動(dòng)窗體IfintStatus=1ThenfrmMain.ShowElsefrmPassword.ShowEndIfEndSubSubMain()25需要注意的是,SubMain過程必須在標(biāo)準(zhǔn)模塊中創(chuàng)建,不能在窗體模塊內(nèi)。一個(gè)工程可以含有多個(gè)標(biāo)準(zhǔn)模塊,但SubMain過程只能有一個(gè)。SubMain過程通常是作為啟動(dòng)過程編寫的,但是VisualBasic并不能夠自動(dòng)識(shí)別SubMain過程,也就是說,并不自動(dòng)把它作為啟動(dòng)過程。若將SubMain過程設(shè)為啟動(dòng)對(duì)象,需要選擇“工程”→“工程屬性”菜單,在“工程屬性”對(duì)話框中選中“通用”選項(xiàng)卡,在“啟動(dòng)對(duì)象”下拉列表中選定“SubMain”。需要注意的是,SubMain過程必須在標(biāo)準(zhǔn)模塊中創(chuàng)建,不能262.顯示啟動(dòng)時(shí)的快速顯示
如果啟動(dòng)時(shí)有一個(gè)較長(zhǎng)的執(zhí)行過程,例如要從數(shù)據(jù)庫中裝入大量數(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ò)覺。當(dāng)這些啟動(dòng)例程完成后,可以裝載第一個(gè)窗體并卸載快速顯示。對(duì)于快速顯示的設(shè)計(jì),應(yīng)盡量簡(jiǎn)單為好。如果使用大量位圖或者大量控件,則快速顯示本身裝載將會(huì)變慢。2.顯示啟動(dòng)時(shí)的快速顯示27若要顯示快速顯示,需要將SubMain過程作為啟動(dòng)對(duì)象,并用Show方法顯示該窗體:PrivateSubMain()frmSplash.Show'顯示快速顯示'在此處添加啟動(dòng)過程。......frmMain.Show'顯示主窗體UnloadfrmSplash'卸載快速顯示EndSub若要顯示快速顯示,需要將SubMain過程作為啟動(dòng)對(duì)象,28例9.2設(shè)計(jì)一個(gè)“古詩選讀”程序,該程序由7個(gè)窗體組成。分別為快速顯示窗體、封面窗體、列表窗體以及4個(gè)用來顯示古詩內(nèi)容的窗體。程序運(yùn)行后,在裝載數(shù)據(jù)時(shí)顯示快速顯示窗體,然后顯示封面窗體并卸載快速顯示,接著顯示列表窗體,在該窗體中列出所要閱讀的古詩目錄(4個(gè)),雙擊某個(gè)目錄后,在另一個(gè)窗體的文本框中顯示相應(yīng)的詩文內(nèi)容。例9.2設(shè)計(jì)一個(gè)“古詩選讀”程序,該程序由7個(gè)窗體組成。299.2.4閑置循環(huán)與DoEvents語句VisualBasic屬于事件驅(qū)動(dòng)型語言,即只有當(dāng)發(fā)生某個(gè)事件時(shí),才執(zhí)行相應(yīng)的程序,否則,應(yīng)用程序會(huì)處于“閑置”狀態(tài)。另一方面,當(dāng)VisualBasic執(zhí)行一個(gè)過程時(shí),將停止對(duì)其它事件(如鼠標(biāo)事件)的處理,直至執(zhí)行完EndSub或EndFunction指令為止。為了改變這種執(zhí)行順序,VB提供了閑置循環(huán)(IdleLoop)和DoEvents語句。閑置循環(huán)就是當(dāng)應(yīng)用程序處于閑置狀態(tài)時(shí),用一個(gè)循環(huán)來執(zhí)行其它操作。簡(jiǎn)言之,閑置循環(huán)就是應(yīng)用程序在閑置狀態(tài)下執(zhí)行的循環(huán)。但執(zhí)行閑置循環(huán)又會(huì)占用全部CPU時(shí)間,不允許執(zhí)行其它事件過程。為此,VisualBasic提供了一個(gè)DoEvents語句,無論何時(shí),一執(zhí)行到DoEvents語句,就會(huì)把系統(tǒng)的控制權(quán)交給周圍環(huán)境使用,然后再回到原來程序繼續(xù)執(zhí)行。9.2.4閑置循環(huán)與DoEvents語句30DoEvents既可以作為語句使用,也可以作為函數(shù)使用。作為函數(shù)使用時(shí),返回值為當(dāng)前裝入VisualBasic應(yīng)用程序工作區(qū)的窗體號(hào),如果不想使用這個(gè)返回值,則可以隨便用一個(gè)變量接收返回值。DoEvents語句格式為:DoEventsDoEvents函數(shù)格式為:窗體號(hào)|變量名=DoEvents()DoEvents既可以作為語句使用,也可以作為函數(shù)使用。作為31例9.3編寫程序,試驗(yàn)閑置循環(huán)和DoEvents語句。窗體上有一個(gè)標(biāo)簽和兩個(gè)命令按鈕,當(dāng)系統(tǒng)處于閑置狀態(tài)時(shí),標(biāo)簽顯示“系統(tǒng)處于閑置狀態(tài)”,同時(shí)不斷右移;當(dāng)按下“運(yùn)行”按鈕后,標(biāo)簽顯示“正在運(yùn)行程序”。程序運(yùn)行后,首先執(zhí)行SubMain過程,顯示出窗體后,執(zhí)行閑置循環(huán),使標(biāo)簽不斷右移。當(dāng)按下“運(yùn)行”按鈕后,發(fā)生了Command1的Click事件,執(zhí)行到DoEvents語句時(shí),程序會(huì)響應(yīng)這個(gè)事件,暫停閑置循環(huán),執(zhí)行Command1_Click()事件過程,執(zhí)行完該過程,程序又回到閑置循環(huán)繼續(xù)執(zhí)行,使標(biāo)簽繼續(xù)右移。標(biāo)簽暫停移動(dòng)的時(shí)間由Command1_Click()事件過程中的延時(shí)循環(huán)決定。當(dāng)按下“退出”按鈕時(shí),則退出程序。例9.3編寫程序,試驗(yàn)閑置循環(huán)和DoEvents語句。32演講完畢,謝謝觀看!演講完畢,謝謝觀看!33第9章多重窗體與環(huán)境應(yīng)用9.1多重窗體9.2VisualBasic工程結(jié)構(gòu)
第9章多重窗體與環(huán)境應(yīng)用9.1多重窗體9.2Vi349.1多重窗體
9.1.1多重窗體管理
9.1.2設(shè)置啟動(dòng)窗體
9.1.3窗體處理
9.1.4多重窗體應(yīng)用實(shí)例
9.1多重窗體9.1.1多重窗體管理359.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è)新窗體。9.1.1多重窗體管理362.移除工程中的窗體移除工程中多余的窗體有以下兩種方法:⑴在工程資源管理器窗口中選定要?jiǎng)h除的窗體,選擇“工程”→“移除窗體”菜單項(xiàng)。⑵在工程資源管理器中選中要?jiǎng)h除的窗體,單擊右鍵彈出其快捷菜單,選取“移除窗體”選項(xiàng)。3.保存窗體在多重窗體應(yīng)用程序中,每個(gè)窗體都要單獨(dú)保存,方法同單一窗體應(yīng)用程序一樣。在工程資源管理器窗口中選定要保存的窗體,選擇“文件”→“保存窗體”菜單或“窗體另存為”菜單,或者在工程資源管理器中打開快捷菜單,選取“保存窗體”或“窗體另存為”選項(xiàng)。每個(gè)窗體保存后都生成一個(gè)擴(kuò)展名為“.frm”的文件。2.移除工程中的窗體379.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”過程,用戶可以根據(jù)需要進(jìn)行選擇。若選用SubMain過程作為啟動(dòng)對(duì)象,則在程序啟動(dòng)時(shí)不加載任何窗體,而是運(yùn)行一個(gè)SubMain過程,然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個(gè)窗體。9.1.2設(shè)置啟動(dòng)窗體389.1.3窗體處理在使用相關(guān)語句和方法前,大家有必要先了解窗體在應(yīng)用程序中的三種存在形式:沒有被加載:這時(shí),窗體雖然是應(yīng)用程序的構(gòu)件,但并沒有正式成為項(xiàng)目的組成部分,即窗體不會(huì)占用系統(tǒng)資源。加載但沒有顯示:這時(shí),窗體已經(jīng)被加載,成為項(xiàng)目的組成部分,但并沒有顯示出來。加載并顯示:這時(shí),窗體已經(jīng)被正式顯示出來,當(dāng)然窗體一定要被加載后才能顯示出來。9.1.3窗體處理39如果應(yīng)用程序中只有一個(gè)窗體,在程序運(yùn)行時(shí)這個(gè)窗體會(huì)被自動(dòng)加載并顯示出來。如果應(yīng)用程序由多個(gè)窗體組成,則會(huì)有一個(gè)窗體被設(shè)置為啟動(dòng)窗體。在程序運(yùn)行時(shí)啟動(dòng)窗體同樣被自動(dòng)加載并顯示,而其他的窗體則必須在已經(jīng)啟動(dòng)的窗體中進(jìn)行加載或顯示,這就要用到下面幾個(gè)相關(guān)語句和方法。1.Load語句格式:Load<窗體名稱>該語句用于將一個(gè)窗體裝入內(nèi)存。執(zhí)行Load語句后,窗體處于“加載但沒有顯示”狀態(tài),此時(shí)可以引用窗體中的控件及各種屬性,但窗體沒有顯示出來。如果應(yīng)用程序中只有一個(gè)窗體,在程序運(yùn)行時(shí)這個(gè)402.Unload語句格式:Unload<窗體名稱>該語句用于卸載內(nèi)存中指定的窗體,與Load語句的功能相反。執(zhí)行Unload語句后,窗體處于“沒有被加載”狀態(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)處理此類問題,這對(duì)于程序的運(yùn)行是極為不利的。為了避免這種情況,應(yīng)在結(jié)束程序前使用Unload語句將窗體從內(nèi)存中刪除。2.Unload語句413.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)閉為止。注:該方法兼有裝入和顯示窗體兩種功能。也就是說,在執(zhí)行Show方法時(shí),如果窗體沒有裝入內(nèi)存,則執(zhí)行時(shí)Show方法會(huì)自動(dòng)把窗體裝入內(nèi)存,然后顯示出來。3.Show方法424.Hide方法格式:[窗體名稱].Hide該方法用于將窗體隱藏起來。執(zhí)行Hide方法后,窗體處于“加載但沒有顯示”狀態(tài),即窗體仍在內(nèi)存中,但窗體沒有顯示出來,與窗體卸載有本質(zhì)的區(qū)別。4.Hide方法439.1.4多重窗體應(yīng)用實(shí)例和單一窗體的程序設(shè)計(jì)一樣,多重窗體程序設(shè)計(jì)也基本上分為5步:設(shè)計(jì)界面、設(shè)置屬性、編寫代碼、調(diào)試運(yùn)行、保存程序。關(guān)鍵的問題是作為一個(gè)完整的工程,如何把多個(gè)窗體“組裝”起來,并根據(jù)程序功能實(shí)現(xiàn)窗體間的切換。下面通過一個(gè)簡(jiǎn)單的例子進(jìn)行說明。例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)碼”窗體,“歡迎”窗體消失。9.1.4多重窗體應(yīng)用實(shí)例442.在“手機(jī)號(hào)碼”窗體中輸入手機(jī)號(hào)碼后,單擊“確定”按鈕,則打開“密碼”窗體,“手機(jī)號(hào)碼”窗體消失;若單擊“返回”按鈕,則返回“歡迎”窗體。3.在“密碼”窗體中輸入密碼后,單擊“確定”按鈕,只要密碼非空則顯示剩余話費(fèi);若單擊“查詢下一個(gè)”按鈕,則返回“手機(jī)號(hào)碼”窗體;若單擊“返回”按鈕,則返回“歡迎”窗體。通過該例可以發(fā)現(xiàn),多重窗體應(yīng)用程序中,通過相關(guān)按鈕的設(shè)置,實(shí)現(xiàn)窗體的顯示與隱藏,從而將多個(gè)窗體連接成一個(gè)有機(jī)的整體。2.在“手機(jī)號(hào)碼”窗體中輸入手機(jī)號(hào)碼后,單擊“確定”按鈕,則45第一個(gè)窗體第一個(gè)窗體46第二個(gè)窗體第二個(gè)窗體47第三個(gè)窗體第三個(gè)窗體48Form1代碼:PrivateSubCommand1_Click()Form2.ShowForm1.HideEndSubForm1代碼:PrivateSubCommand1_C49PrivateSubCommand1_Click()IfText1.Text<>""ThenForm3.Show:Form2.HideEndSubPrivateSubCommand2_Click()Form1.ShowForm2.HideEndSubForm2代碼:PrivateSubCommand1_Click()Fo50PrivateSubCommand1_Click()IfText1.Text<>""ThenText2.Text="話費(fèi)"EndSubPrivateSubCommand2_Click()Form2.ShowForm3.HideEndSubPrivateSubCommand3_Click()Form1.ShowForm3.HideEndSubForm3代碼:PrivateSubCommand1_Click()Fo519.2VisualBasic工程結(jié)構(gòu)
9.2.1標(biāo)準(zhǔn)模塊
9.2.2窗體模塊
9.2.3SubMain過程9.2.4閑置循環(huán)與DoEvents語句9.2VisualBasic工程結(jié)構(gòu)9529.2.1標(biāo)準(zhǔn)模塊
在單一窗體應(yīng)用程序中,所有的代碼都存放在一個(gè)窗體模塊中,而在多重窗體應(yīng)用程序中,每個(gè)窗體對(duì)應(yīng)一個(gè)窗體模塊,有些公共變量或通用過程需要在多個(gè)窗體中共用,這就需要?jiǎng)?chuàng)建標(biāo)準(zhǔn)模塊。標(biāo)準(zhǔn)模塊由全局變量聲明、模塊級(jí)聲明及通用過程等幾部分組成,標(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í),各模塊中的過程不能重名。9.2.1標(biāo)準(zhǔn)模塊53向工程中添加標(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)行公共變量、常量、類型、外部過程和公共過程的聲明。向工程中添加標(biāo)準(zhǔn)模塊有以下三種方法:549.2.2窗體模塊應(yīng)用程序中的每個(gè)窗體都有一個(gè)包含其代碼的窗體模塊。窗體模塊包括3部分內(nèi)容,即通用聲明部分、通用過程部分和事件過程部分,窗體模塊文件的擴(kuò)展名為“.frm”。如果在文本編輯器中觀察窗體模塊,則還會(huì)看到窗體及其控件的描述,包括它們的屬性設(shè)置值。在窗體模塊的通用聲明部分中,用Dim語句聲明的變量,其作用域?yàn)檎麄€(gè)窗體模塊,即該模塊中的所有過程。通用聲明部分一般放在代碼的最前面,而通用過程和事件過程的位置沒有嚴(yán)格的限制。9.2.2窗體模塊55在窗體模塊中,可以調(diào)用標(biāo)準(zhǔn)模塊中的過程,也可以調(diào)用其它窗體模塊中的過程。注意,被調(diào)用的過程必須用Public定義為公共過程。標(biāo)準(zhǔn)模塊中的過程,可直接調(diào)用,若調(diào)用其它窗體模塊中的過程,則必須加上過程所在的窗體名。在窗體模塊中,可以調(diào)用標(biāo)準(zhǔn)模塊中的過程,也可569.2.3SubMain過程SubMain過程是在標(biāo)準(zhǔn)模塊中建立的過程,通常是作為啟動(dòng)過程編寫的。若選用SubMain過程作為啟動(dòng)對(duì)象,則在程序啟動(dòng)時(shí)不加載任何窗體,而是運(yùn)行一個(gè)SubMain過程,然后根據(jù)程序代碼來決定是否加載窗體或加載哪一個(gè)窗體。1.沒有啟動(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的子過程,如下面的例子所示。9.2.3SubMain過程57SubMain()DimintStatusAsInteger'調(diào)用一個(gè)函數(shù)過程來檢驗(yàn)用戶狀態(tài)intStatus=GetUserStatus()'根據(jù)狀態(tài)顯示某個(gè)啟動(dòng)窗體IfintStatus=1ThenfrmMain.ShowElsefrmPassword.ShowEndIfEndSubSubMain()58需要注意的是,SubMain過程必須在標(biāo)準(zhǔn)模塊中創(chuàng)建,不能在窗體模塊內(nèi)。一個(gè)工程可以含有多個(gè)標(biāo)準(zhǔn)模塊,但SubMain過程只能有一個(gè)。SubMain過程通常是作為啟動(dòng)過程編寫的,但是VisualBasic并不能夠自動(dòng)識(shí)別SubMain過程,也就是說,并不自動(dòng)把它作為啟動(dòng)過程。若將SubMain過程設(shè)為啟動(dòng)對(duì)象,需要選擇“工程”→“工程屬性”菜單,在“工程屬性”對(duì)話框中選中“通用”選項(xiàng)卡,在“啟動(dòng)對(duì)象”下拉列表中選定“SubMain”。需要注意的是,SubMain過程必須在標(biāo)準(zhǔn)模塊中創(chuàng)建,不能592.顯示啟動(dòng)時(shí)的快速顯示
如果啟動(dòng)時(shí)有一個(gè)較長(zhǎng)的執(zhí)行過程,例如要從數(shù)據(jù)庫中裝入大量數(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ò)覺。當(dāng)這些啟動(dòng)例程完成后,可以裝載第一個(gè)窗體并卸載快速顯示。對(duì)于快速顯示的設(shè)計(jì),應(yīng)盡量簡(jiǎn)單為好。如果使用大量位圖或者大量控件,則快速顯示本身裝載將會(huì)變慢。2.顯示啟動(dòng)時(shí)的快速顯示60若要顯示快速顯示,需要將SubMain過程作為啟動(dòng)對(duì)象,并用Show方法顯示該窗體:PrivateSubMain()frmS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子書制作原理與技巧考核試卷
- 西安工業(yè)大學(xué)《國內(nèi)外音樂教學(xué)法與音樂活動(dòng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 唐山師范學(xué)院《云計(jì)算技術(shù)與應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢警官職業(yè)學(xué)院《機(jī)器人學(xué)引論》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊財(cái)經(jīng)職業(yè)學(xué)院《書法美學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 麗水市遂昌縣2025屆數(shù)學(xué)四年級(jí)第二學(xué)期期末監(jiān)測(cè)試題含解析
- 思南縣2025屆四年級(jí)數(shù)學(xué)第二學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
- 遼寧省遼陽市遼陽縣2025屆三下數(shù)學(xué)期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 遼寧冶金職業(yè)技術(shù)學(xué)院《土壤與生物地理學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊城市經(jīng)濟(jì)職業(yè)學(xué)院《檢測(cè)技術(shù)及控制儀表》2023-2024學(xué)年第二學(xué)期期末試卷
- 國外幾家氣壓盤式制動(dòng)器的比較
- 培養(yǎng)初中學(xué)生的數(shù)學(xué)閱讀理解能力
- 社區(qū)衛(wèi)生服務(wù)中心醫(yī)院感染監(jiān)測(cè)統(tǒng)計(jì)表
- 卒中相關(guān)肺炎的指南解讀
- 信息安全評(píng)估表
- 硒知識(shí)科普手冊(cè)
- 《潔凈工程項(xiàng)目定額》(征求意見稿)
- 新版冀教版科學(xué)四年級(jí)下冊(cè)全冊(cè)教案(雙面打印)
- 政府采購業(yè)務(wù)知識(shí)培訓(xùn)課件(PPT33張)
- 大體積混凝土施工質(zhì)量控制論文
- 客戶退貨申請(qǐng)單
評(píng)論
0/150
提交評(píng)論