《Visual Basic程序設(shè)計(jì)教程》課件 第10章 多重窗體與MDI窗體程序設(shè)計(jì)_第1頁(yè)
《Visual Basic程序設(shè)計(jì)教程》課件 第10章 多重窗體與MDI窗體程序設(shè)計(jì)_第2頁(yè)
《Visual Basic程序設(shè)計(jì)教程》課件 第10章 多重窗體與MDI窗體程序設(shè)計(jì)_第3頁(yè)
《Visual Basic程序設(shè)計(jì)教程》課件 第10章 多重窗體與MDI窗體程序設(shè)計(jì)_第4頁(yè)
《Visual Basic程序設(shè)計(jì)教程》課件 第10章 多重窗體與MDI窗體程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(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)介

Visual

Basic程序設(shè)計(jì)教程CHAPTER多重窗體與MDI窗體概述多重窗體程序設(shè)計(jì)MDI窗體程序設(shè)計(jì)第十章 多重窗體與MDI窗體程序設(shè)計(jì)10.1

多重窗體與MDI窗體概述Section什么是多重窗體和MDI窗體模態(tài)窗體與非模態(tài)窗體10.1多重窗體與MDI窗體概述10.1.1什么是多重窗體和MDI窗體多重窗體是指一個(gè)應(yīng)用程序中有多個(gè)并列的普通窗體,每個(gè)窗體都是獨(dú)立的,用于完成不同的功能。例如,在Word中,文檔編輯窗口是一個(gè)窗體,執(zhí)行某些命令分別打開(kāi)不同的對(duì)話框,這些對(duì)話框也都是窗體。MDI又稱多文檔界面,是指在單個(gè)容器窗體中包含多個(gè)子窗體的應(yīng)用程序。在運(yùn)行MDI應(yīng)用程序時(shí),子窗體永遠(yuǎn)顯示在MDI父窗體工作空間之內(nèi)(其區(qū)域在父窗體邊框以內(nèi)及標(biāo)題欄、菜單欄和工具欄之下)。當(dāng)子窗體最小化時(shí),它的圖標(biāo)顯示在父窗體的工作空間之內(nèi),而不是在任務(wù)欄中,如下圖所示。當(dāng)父窗體最小化時(shí),父窗體連同其中的子窗體被整體收縮至任務(wù)欄,且任務(wù)欄中只有父窗體一個(gè)圖標(biāo)。。第頁(yè)共頁(yè)5010.1多重窗體與MDI窗體概述10.1.1什么是多重窗體和MDI窗體MDI應(yīng)用程序在VB中,每個(gè)工程最多可以有一個(gè)MDI窗體,該窗體被作為所有子窗體的父窗體。所謂子窗體,實(shí)際上就是MDIChild屬性設(shè)置為T(mén)rue的普通窗體。子窗體可以有多個(gè)。另外,只要程序中有子窗體(1個(gè)或多個(gè)),程序中必須有一個(gè)MDI窗體,否則程序運(yùn)行時(shí)將出錯(cuò)。第頁(yè)共頁(yè)5010.1多重窗體與MDI窗體概述10.1.2模態(tài)窗體與非模態(tài)窗體在多重窗體中,窗體可以模態(tài)(Modal)和非模態(tài)(Modeless)兩種類型來(lái)顯示。在屏幕上顯示窗體后,在關(guān)閉該窗體之前,該窗體始終獲得焦點(diǎn),且用戶無(wú)法進(jìn)行其他操作的窗體被稱為模態(tài)窗體,如

Windows各種應(yīng)用程序中的各種對(duì)話框。用戶在關(guān)閉這些對(duì)話框之前,無(wú)法執(zhí)行其他操作,如右圖所示。對(duì)話框?yàn)槟B(tài)窗體第頁(yè)共頁(yè)5010.1多重窗體與MDI窗體概述10.1.2模態(tài)窗體與非模態(tài)窗體反之,窗體顯示后,用戶可以隨意在各窗體之間進(jìn)行切換的窗體被稱為非模態(tài)窗體或無(wú)模式窗體。Word、Excel中的“查找”和“替換”對(duì)話框均為無(wú)模式窗體,因?yàn)橛脩粼诖蜷_(kāi)這兩個(gè)對(duì)話框后,可以不關(guān)閉對(duì)話框而回到文檔窗口來(lái)編輯文檔內(nèi)容。值得注意的是,用戶新建空白窗體時(shí),它沒(méi)有類型之分。但是,將其使用Show方法顯示時(shí),可以為其指定顯示類型。第頁(yè)共頁(yè)50Section多重窗體程序設(shè)計(jì)在多重窗體程序中,要建立的程序界面由多個(gè)窗體組成,不過(guò),每個(gè)窗體的設(shè)計(jì)與前面學(xué)過(guò)的完全一樣,程序代碼也是針對(duì)每個(gè)窗體編寫(xiě)的,用戶只要注意各個(gè)窗體之間的相互關(guān)系就可以了。添加窗體

10.2.2

設(shè)置啟動(dòng)對(duì)象與多重窗體程序設(shè)計(jì)有關(guān)的語(yǔ)句和方法不同窗體間數(shù)據(jù)的傳遞實(shí)例10-1——制作模擬登錄系統(tǒng)10.2.1添加窗體10.2多重窗體程序設(shè)計(jì)在窗體類型列表中單擊選擇某種窗體,然后單擊“打開(kāi)”按鈕,即可為應(yīng)用程序創(chuàng)建一個(gè)新窗體。此外,如果用戶希望將現(xiàn)有窗體添加到工程中,可以在“添加窗體”對(duì)話框中打開(kāi)“現(xiàn)存”選項(xiàng)卡,然后選擇已創(chuàng)建的窗體并單擊“打開(kāi)”按鈕。在VB中創(chuàng)建一個(gè)新工程后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)空白窗體。如果希望為應(yīng)用程序增加其他窗體,可以選擇“工程”菜單中的“添加窗體”命令,此時(shí)系統(tǒng)將打開(kāi)如右圖所示的“添加窗體”對(duì)話框?!疤砑哟绑w”對(duì)話框第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)10.2.2設(shè)置啟動(dòng)對(duì)象程序運(yùn)行過(guò)程中,首先執(zhí)行的對(duì)象被稱為啟動(dòng)對(duì)象。缺省情況下,第一個(gè)創(chuàng)建的窗體被自動(dòng)指定為啟動(dòng)對(duì)象,即啟動(dòng)窗體。如果希望指定其他窗體為啟動(dòng)窗體,可選擇“工程”菜單中的“工程屬性”命令,打開(kāi)“工程屬性”對(duì)話框,然后打開(kāi)“啟動(dòng)對(duì)象”下拉列表,選擇要作為啟動(dòng)對(duì)象的窗體,如下圖所示。“工程屬性”對(duì)話框通過(guò)圖10-4還可以看出,除了窗體外,用戶還可以選擇“Sub

Main”作為啟動(dòng)對(duì)象。不過(guò),提示

要選擇Sub

Main,用戶必須已經(jīng)創(chuàng)建了程序模塊,并且已經(jīng)在該模塊中創(chuàng)建了Sub

Main過(guò)程。此外,如果將啟動(dòng)對(duì)象設(shè)置為Sub

Main,則程序啟動(dòng)時(shí)將不加載任何窗體,用戶只能通過(guò)程序代碼來(lái)指定加載哪些窗體。第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)與多重窗體程序設(shè)計(jì)有關(guān)的語(yǔ)句和方法在單窗體程序設(shè)計(jì)中,所有的操作都在一個(gè)窗體中完成,不需要在多個(gè)窗體間切換。而在多窗體程序中,需要打開(kāi)、關(guān)閉、隱藏或顯示各窗體,此時(shí)可以通過(guò)相應(yīng)的語(yǔ)句和方法來(lái)實(shí)現(xiàn)。下面就來(lái)介紹幾個(gè)與窗體加載、卸載、顯示、隱藏相關(guān)的語(yǔ)句和方法。Load語(yǔ)句ONE該語(yǔ)句用來(lái)加載窗體,其格式為:Load窗體名稱例如:Load

Form2

"加載Form2窗體不過(guò),加載窗體只是把窗體調(diào)入內(nèi)容,并不會(huì)顯示窗體。另外,加載窗體時(shí)會(huì)依次觸發(fā)窗體的Initialize事件和Load事件。第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)10.2.3與多重窗體程序設(shè)計(jì)有關(guān)的語(yǔ)句和方法2.Unload語(yǔ)句TWO該語(yǔ)句與Load語(yǔ)句的功能相反,它從內(nèi)存中刪除指定的窗體,其格式為:Unload窗體名稱Unload的一種常見(jiàn)用法是Unload

Me,其意義是關(guān)閉當(dāng)前窗體。其中,關(guān)鍵字Me代表Unload

Me語(yǔ)句所在的窗體。例如:Unload

Me

"卸載當(dāng)前窗體第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)10.2.3與多重窗體程序設(shè)計(jì)有關(guān)的語(yǔ)句和方法3.Show方法threeShow方法的格式如下:窗體名稱.Show

style,ownerform其中,style可以設(shè)置為0(對(duì)應(yīng)常量vbModeless)或1(對(duì)應(yīng)常量vbModal),分別對(duì)應(yīng)無(wú)模式或模式。ownerform對(duì)應(yīng)關(guān)鍵字Me。如下例所示:"顯示模式窗體frmResults.frmResults.Show

vbModal,Me如果使用不帶參數(shù)的Show方法,表示以無(wú)模式方式來(lái)顯示窗體。第頁(yè)共頁(yè)50該方法用來(lái)顯示窗體,它兼有加載和顯示窗體兩種功能。也就是說(shuō),使用Show方法時(shí),如果窗體不在內(nèi)存中(即以前沒(méi)有執(zhí)行Load語(yǔ)句),則Show方法會(huì)自動(dòng)把窗體裝入內(nèi)存,然后再顯示出來(lái)。同時(shí),被顯示的窗體成為當(dāng)前窗體。10.2多重窗體程序設(shè)計(jì)10.2.3與多重窗體程序設(shè)計(jì)有關(guān)的語(yǔ)句和方法4.Hide方法FOUR該方法用來(lái)將窗體暫時(shí)隱藏起來(lái),但窗體并沒(méi)有從內(nèi)存中刪除,因此它與Unload語(yǔ)句的作用是不一樣的。其語(yǔ)法格式為:[窗體名稱.]Hide當(dāng)省略窗體名稱時(shí),將隱藏當(dāng)前窗體。第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)10.2.4不同窗體間數(shù)據(jù)的傳遞不同窗體數(shù)據(jù)的傳遞分為兩種情況:一是在一個(gè)窗體中存取其他窗體或窗體中控件對(duì)象的屬性;二是在一個(gè)窗體中存取其他窗體變量的值。下面分別進(jìn)行介紹。1.存取其他窗體或窗體中控件的屬性O(shè)NE在當(dāng)前窗體中要存取另一個(gè)窗體或窗體中某個(gè)控件的屬性,格式如下:另一個(gè)窗體名稱.[控件名.]屬性Text1.Text

=

Val(Form2.Text1.Text)

+

Val(Form2.Text2.Text)例如要設(shè)置當(dāng)前窗體(Form1)中文本框Text1的值等于另一個(gè)窗體(Form2)中兩個(gè)文本框Text1和Text2的數(shù)值之和,具體的語(yǔ)句如下:第頁(yè)共頁(yè)5010.2.4不同窗體間數(shù)據(jù)的傳遞10.2多重窗體程序設(shè)計(jì)2.存取其他窗體中變量的值TWO如果希望一個(gè)窗體中的變量可以供其他窗體使用,必須在該窗體代碼窗口的“(通用)”段利用Public將該變量聲明為全局變量,例如:Public

PbVar1

As

Integer

"聲明可以供其他窗體使用的全局變量要在一個(gè)窗體中調(diào)用其他窗體聲明的全局變量,可以使用如下格式:窗體名稱.全局變量名例如要在Form1窗體代碼中調(diào)用Form2窗體中聲明的全局變量,其格式如下:x=Form2.PbVar1

"調(diào)用Form2窗體中聲明的全局變量此外,如果希望聲明一個(gè)或多個(gè)可以供各個(gè)窗體使用的全局變量,最好的辦法是在程序模塊中使用Public來(lái)聲明全局變量,此時(shí)各窗體代碼中可以直接引用它們。第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例

10-1制作簡(jiǎn)易多文檔記事本第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)本例設(shè)計(jì)了一個(gè)模擬登錄系統(tǒng)程序。系統(tǒng)首先顯示了一個(gè)登錄窗體,用戶可以在其中輸入用戶名和密碼,如下圖所示?!暗卿洝贝绑w如果用戶不輸入用戶名或密碼,單擊“確定”按鈕后,系統(tǒng)將給出一個(gè)錯(cuò)誤提示對(duì)話框,要求用戶輸入用戶名稱或密碼,如下圖所示。不輸入用戶名或密碼時(shí)的警告提示第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)如果用戶同時(shí)輸入了用戶名和密碼,但是用戶名或密碼錯(cuò)誤,則系統(tǒng)會(huì)給出一個(gè)錯(cuò)誤提示對(duì)話框,并且算一次機(jī)會(huì)。用戶最多有3次機(jī)會(huì),一旦超過(guò)3次,系統(tǒng)會(huì)自動(dòng)終止程序運(yùn)行,如下圖所示。用戶名或密碼錯(cuò)誤第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)當(dāng)用戶輸入正確的用戶名和密碼(“vb”和“l(fā)ove”)后,系統(tǒng)將首先顯示一個(gè)歡迎提示對(duì)話框,然后顯示程序主窗體,并在主窗體上顯示正確的用戶名,如下圖所示。輸入正確的用戶名和密碼第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟1新建一個(gè)工程,適當(dāng)加大窗體尺寸,在其中創(chuàng)建兩個(gè)標(biāo)簽和一個(gè)命令按鈕,然后參照下面的說(shuō)明修改窗體及控件對(duì)象的屬性:(1)將Form1的Name屬性修改為frmMain,Caption屬性修改為“主窗體”;將Label1的Caption屬性修改為“當(dāng)前用戶為:”,BackStyle屬性設(shè)置為“0-Transparent”,F(xiàn)ont屬性設(shè)置為宋體、四號(hào);將Label2的Name屬性修改為lblUserName,Caption屬性設(shè)置為空,BorderStyle屬性設(shè)置為1-Fixed

Size,F(xiàn)ont屬性設(shè)置為宋體、四號(hào);將Command1的Name屬性修改為cmdQuit,Caption屬性修改為“關(guān)閉窗口”。第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟2適當(dāng)調(diào)整標(biāo)簽和命令按鈕的位置和大小。其中,為確保兩個(gè)標(biāo)簽的頂端對(duì)齊和高度相同,可首先選中兩個(gè)標(biāo)簽,然后分別單擊“窗體編輯器”工具欄中的“頂端對(duì)齊”按鈕和“高度相同”按鈕,如下圖所示。使兩個(gè)標(biāo)簽頂端對(duì)齊且等高第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟3步驟4選中窗體中的所有3個(gè)控件對(duì)象,單擊“窗體編輯器”工具欄中的“鎖定控件切換”按鈕

,鎖定3個(gè)控件的位置。選擇“工程”菜單中的“添加窗體”命令,打開(kāi)“添加窗體”對(duì)話框。在窗體類型列表區(qū)單擊選中“登錄對(duì)話框”類型,如下圖所示。“添加窗體”對(duì)話框第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟5單擊“打開(kāi)”按鈕,系統(tǒng)將新建一個(gè)名稱為frmLogin的窗體,如下圖所示。步驟6新創(chuàng)建的frmLogin窗體為了方便后面的操作,按【Ctrl+A】組合鍵,然后單擊“窗體編輯器”工具欄中的“鎖定控件切換”按鈕

,鎖定全部控件。第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟7分別單擊選中窗體、兩個(gè)文本框和兩個(gè)按鈕,查看其屬性,了解其名稱和屬性,結(jié)果如下:(1)窗體:名稱為frmLogin,Caption屬性為“登錄”,BorderStyle屬性為“3-Fixed

Dialog”(固定對(duì)話框);文本框:上面文本框的名稱為txtUserName,下面文本框的名稱為txtPassword;命令按鈕:左側(cè)命令按鈕的名稱為cmdOk,Caption屬性為“確定”;右側(cè)命令按鈕的名稱為cmdCancel,Caption屬性為“取消”。此處之所以要查看一下窗體和控件的屬性,主要是為了下面修改模板窗體的預(yù)置代碼。第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟8

雙擊窗體或控件對(duì)象,打開(kāi)代碼窗口,刪除原有代碼,輸入以下代碼:"要求變量必須先聲明、后使用

Option

Explicit"聲明輸入錯(cuò)誤次數(shù)變量Dim

tryNumber

As

Integer"單擊"取消"按鈕,退出程序

Private

Sub

cmdCancel_Click()EndEnd

Sub"以下為"確定"按鈕單擊事件過(guò)程

Private

Sub

cmdOK_Click()If

txtUserName.Text

=

""

Then"如果名稱為空,則顯示警告對(duì)話框。vbOKOnly+vbExclamation表示

"提示對(duì)話框中只顯示“確定”按鈕并顯示警告圖標(biāo)MsgBox"請(qǐng)輸入用戶名!",vbOKOnly+vbExclamation,"錯(cuò)誤"第頁(yè)共頁(yè)50"名稱文本框獲得焦點(diǎn)"退出過(guò)程txtUserName.SetFocusExit

SubEnd

If第頁(yè)

50

頁(yè)10.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)"如果密碼文本框?yàn)榭?,處理方式同?/p>

If

txtPassword.Text=""ThenMsgBox"請(qǐng)輸入密碼!",vbOKOnly+vbExclamation,"錯(cuò)誤"

txtPassword.SetFocusExit

SubEnd

If"如果用戶名為"vb",密碼為"love",表示登錄者為合法用戶If

Trim(txtUserName.Text)="vb"And

Trim(txtPassword.Text)="love"Then"首先顯示歡迎提示對(duì)話框MsgBox"你是合法用戶,歡迎使用!",vbOKOnly+vbInformation,_"歡迎進(jìn)入"UserName

=

Trim(txtUserName.Text)Unload

Me"保存用戶名"卸載當(dāng)前窗體"顯示主窗體"測(cè)試次數(shù)加1"如果輸入錯(cuò)誤超過(guò)3次frmMain.ShowElsetryNumber

=

tryNumber

+

1If

tryNumber

>=

3

ThenEnd"終止程序"否End

If則,如果未超過(guò)3次10.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)"顯示警告對(duì)話框MsgBox"用戶名或密碼錯(cuò)誤!您還有"&

3-tryNumber

&"次機(jī)會(huì)!",_vbOKOnly+vbCritical,"警告""用戶名稱文本框獲得焦點(diǎn),且清空兩個(gè)文本框內(nèi)容

txtUserName.SetFocustxtUserName.Text

=

""txtPassword.Text

=

"“End

IfEnd

Sub第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟9切換到frmMain窗體,雙擊窗體或控件對(duì)象,打開(kāi)代碼窗口,輸入以下代碼:"設(shè)置用戶名第頁(yè)共頁(yè)50Private

Sub

Form_Load()lblUserName.Caption

=

UserNameEnd

SubPrivate

Sub

cmdQuit_Click()End

"終止程序End

Sub10.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟10選擇“工程”菜單中的“添加模塊”命令,打開(kāi)“添加模塊”對(duì)話框,如下圖所示。然后單擊“打開(kāi)”按鈕,為工程增加一個(gè)模塊?!疤砑幽K”對(duì)話框第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟11

在隨即打開(kāi)的模塊代碼編輯窗口中輸入如下代碼:"聲明一個(gè)全局變量,用來(lái)存放用戶輸入的用戶名

Public

UserName

As

String步驟12選擇“工程”菜單中的“工程1屬性”命令,打開(kāi)“工程1-工程屬性”對(duì)話框。打開(kāi)“啟動(dòng)對(duì)象”下拉列表,選擇“frmLogin”,將該窗體作為啟動(dòng)窗體,如下圖所示。然后單擊“確定”按鈕,關(guān)閉對(duì)話框。設(shè)置應(yīng)用程序啟動(dòng)對(duì)象為frmLogin窗體第頁(yè)共頁(yè)5010.2多重窗體程序設(shè)計(jì)實(shí)例10-1——制作模擬登錄系統(tǒng)步驟13單擊“標(biāo)準(zhǔn)”工具欄中的“保存工程”按鈕

,分別將模塊文件以Module10-1-1.bas名稱保存,將兩個(gè)窗體以Form10-1-1.frm和Form10-1-2.frm名稱保存,工程以“課堂實(shí)例10-1.vpb”名稱保存。步驟14單擊“標(biāo)準(zhǔn)”工具欄中的“啟動(dòng)”按鈕,或者按【F5】鍵,執(zhí)行當(dāng)前的應(yīng)用程序,測(cè)試程序效果。此例完全可以不創(chuàng)建程序模塊并聲明全局變量,而利用“窗體名稱.控件名提示

稱.屬性名”格式來(lái)在兩個(gè)窗體之間傳遞數(shù)據(jù)。但是,使用全局變量可以使得程序邏輯更加清晰,更加易于維護(hù)。第頁(yè)共頁(yè)5010.3.2創(chuàng)建MDI應(yīng)用程序10.3

MDI窗體程序設(shè)計(jì)如前所述,MDI窗體程序由父窗體和子窗體組成,其中,只有MDI窗體才能作為父窗體,它被作為子窗口的容器,且每個(gè)工程只能有一個(gè)MDI窗體。子窗體又稱文檔窗口,它通常用于顯示文檔,所有的子窗體都具有相同的功能。Section10.3.1

MDI窗體的特性實(shí)例10-2——制作簡(jiǎn)易多文檔記事本10.3

MDI窗體程序設(shè)計(jì)10.3.1

MDI窗體的特性在應(yīng)用程序運(yùn)行時(shí),MDI窗體及其子窗體都呈現(xiàn)特定的性質(zhì),具體包括:運(yùn)行應(yīng)用程序時(shí),所有子窗體均顯示在MDI窗體的工作空間內(nèi)。用戶仍然可以像操作其他普通窗體一樣移動(dòng)子窗體的位置和改變子窗體的大小,只是它們被限制于MDI窗體工作空間內(nèi)。另外,在進(jìn)行應(yīng)用程序設(shè)計(jì)時(shí),子窗體并未被限制與MDI窗體中。最小化一個(gè)子窗體時(shí),它的圖標(biāo)將顯示于MDI窗體中而不是在任務(wù)欄中。最小化

MDI窗體時(shí),MDI窗體及其所有子窗體將由一個(gè)圖標(biāo)來(lái)代表。還原MDI窗體時(shí),MDI窗體及其所有子窗體將按最小化之前的狀態(tài)顯示出來(lái)。最大化一個(gè)子窗體時(shí),它的標(biāo)題會(huì)與MDI窗體的標(biāo)題組合在一起并顯示于MDI窗體的標(biāo)題欄中。第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)10.3.1

MDI窗體的特性在應(yīng)用程序運(yùn)行時(shí),MDI窗體及其子窗體都呈現(xiàn)特定的性質(zhì),具體包括:系統(tǒng)顯示子窗體時(shí),MDI窗體被自動(dòng)顯示。但是,顯示MDI窗體時(shí),其子窗體并不會(huì)被顯示。利用MDI窗體的AutoShowChildren屬性,可決定如何顯示子窗體。如果該屬性被設(shè)置為T(mén)rue(默認(rèn)),則當(dāng)改變子窗體的屬性(如Caption等)值時(shí),系統(tǒng)會(huì)自動(dòng)顯示該子窗體,不再需要使用Show方法;如果設(shè)置該屬性為False,則改變子窗體的屬性值時(shí),系統(tǒng)不會(huì)自動(dòng)顯示該子窗體,直至用Show方法把它顯示出來(lái)。MDI窗體可以有菜單欄、工具欄、狀態(tài)欄等,但不能在其中增加標(biāo)簽、文本框、命令按鈕等控件。第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)10.3.1

MDI窗體的特性在應(yīng)用程序運(yùn)行時(shí),MDI窗體及其子窗體都呈現(xiàn)特定的性質(zhì),具體包括:(7)MDI應(yīng)用程序的菜單與一般應(yīng)用程序的菜單設(shè)計(jì)方法一致,可利用“菜單編輯器”來(lái)完成,但MDI應(yīng)用程序的菜單還有其特殊性。在MDI應(yīng)用程序中,每一個(gè)子窗體的菜單都顯示在MDI窗體上,而不是在子窗體上。當(dāng)子窗體有焦點(diǎn)時(shí),該子窗體的菜單(如果有的話)就代替菜單欄上的MDI窗體的菜單。如果沒(méi)有可見(jiàn)的子窗體,或者帶有焦點(diǎn)的子窗體沒(méi)有菜單,則顯示MDI窗體的菜單。例如,當(dāng)沒(méi)有文件打開(kāi)時(shí),Excel只顯示“文件”與“幫助”菜單。當(dāng)用戶打開(kāi)一個(gè)文件時(shí),其他菜單就會(huì)顯示出來(lái),如“文件”“編輯”“視圖”“插入”“格式”“工具”和“窗口”等。第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)10.3.2創(chuàng)建MDI應(yīng)用程序在VB中,要?jiǎng)?chuàng)建一個(gè)MDI窗體應(yīng)用程序,通??梢园匆韵虏襟E來(lái)進(jìn)行:(1)選擇“工程”菜單中的“添加MDI窗體”命令,打開(kāi)“添加MDI窗體”對(duì)話框,然后單擊“打開(kāi)”按鈕,如下圖所示。不過(guò),如果工程中已經(jīng)有了一個(gè)MDI窗體,則“工程”菜單中的“添加MDI窗體”命令將不可使用?!疤砑覯DI窗體”對(duì)話框第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)10.3.2創(chuàng)建MDI應(yīng)用程序(3)(2)要?jiǎng)?chuàng)建子窗體,用戶可以首先像前面講述的那樣為工程增加新窗體,然后將希望設(shè)置為子窗體的MDIChild屬性設(shè)置為T(mén)rue。由于子窗體多用于顯示文檔,因此,開(kāi)發(fā)應(yīng)用程序時(shí)一般是先創(chuàng)建一個(gè)子窗體作為窗體模板,然后通過(guò)對(duì)象變量來(lái)為其建立新實(shí)例。例如,假設(shè)已經(jīng)為應(yīng)用程序建立了一個(gè)名稱為frmMDIChild的子窗體模板,則可使用下面的語(yǔ)句來(lái)創(chuàng)建新的實(shí)例:Dim

NewDoc

As

New

frmMDIChild此語(yǔ)句用于為frmMDIChild窗體創(chuàng)建一個(gè)新實(shí)例NewDoc,新實(shí)例具有與frmMDIChild窗體相同的屬性、事件、代碼和控件等。第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例

10-2制作簡(jiǎn)易多文檔記事本第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本本例設(shè)計(jì)了一個(gè)簡(jiǎn)單的多文檔記事本程序。在這個(gè)應(yīng)用程序中,用戶可以打開(kāi)多個(gè)文檔進(jìn)行簡(jiǎn)單編輯,如下圖所示。多文檔記事本程序第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本步驟1新建一個(gè)工程,選擇“工程”菜單中的“添加MDI窗體”,為應(yīng)用程序增加一個(gè)MDI窗體,適當(dāng)加大窗體的尺寸。步驟2選擇“工具”菜單中的“菜單編輯器”命令,打開(kāi)“菜單編輯器”對(duì)話框,參照下頁(yè)表格所示為MDI窗體設(shè)計(jì)菜單,如下所示。利用“菜單編輯器”對(duì)話框?yàn)镸DI窗體設(shè)計(jì)菜單第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本菜單屬性列表菜單項(xiàng)Name屬性快捷鍵菜單項(xiàng)Name屬性快捷鍵文件(&F)mnuFile編輯(&E)mnuEdit….新建mnuNewCtrl+N….剪切mnuCutCtrl+X….保存mnuSaveCtrl+S….全選mnuSelectCtrl+A….

-mnuBar….退出mnuExit第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本步驟3將MDI窗體的Caption屬性設(shè)置為“多文檔記事本”,此時(shí)MDI窗體將如下圖所示。設(shè)計(jì)好的MDI窗體第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本步驟4將Form1窗體的MDIChild屬性設(shè)置為T(mén)rue,名稱設(shè)置為frmChild,Caption屬性設(shè)置為“文檔”。步驟5要實(shí)現(xiàn)應(yīng)用程序的編輯功能,需要在子窗體中引入一個(gè)文本框控件Text1,并設(shè)置Text1的MultiLine屬性值為T(mén)rue,ScrollBars的屬性值為“3–Both”,即水平和垂直滾動(dòng)條都存在,如下圖所示。設(shè)計(jì)子窗體第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本步驟6打開(kāi)MDI窗體的代碼窗口,在其“(通用)”段創(chuàng)建一個(gè)過(guò)程LoadNewDoc,用來(lái)完成新建文檔的功能,具體代碼如下所示:Private

Sub

LoadNewDoc()Static

DocCount

As

LongDim

frmDoc

As

frmChildDocCount

=

DocCount

+

1Set

frmDoc

=

New

frmChild"定義一個(gè)用于記數(shù)的靜態(tài)變量

"定義frmDoc作為窗體對(duì)象"每調(diào)用一次,記數(shù)加1"新建一個(gè)文檔窗體frmDoc.Caption="文檔"&

DocCountfrmDoc.ShowEnd

Sub第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本步驟7

為“文件”菜單中“新建”菜單項(xiàng)的Click事件過(guò)程中編寫(xiě)如下代碼:Private

Sub

mnuNew_Click()LoadNewDocEnd

Sub步驟8為“文件”菜單中“退出”菜單項(xiàng)的Click事件過(guò)程中編寫(xiě)如下代碼:Private

Sub

mnuNew_Click()EndEnd

Sub對(duì)于“保存”菜單項(xiàng)的功能,由于程序涉及文件操作,故此處暫不介紹,有興趣的同學(xué)可以自己試著編寫(xiě)代碼。下面介紹“編輯”菜單中“剪切”菜單項(xiàng)和“全選”菜單項(xiàng)代碼的編寫(xiě)。第頁(yè)共頁(yè)5010.3

MDI窗體程序設(shè)計(jì)實(shí)例10-2——制作簡(jiǎn)易多文檔記事本步驟9在MDI程序運(yùn)行時(shí),可以建立子窗體的多個(gè)實(shí)例(副本)來(lái)存取多個(gè)文檔,這些子窗體具有相同的屬性和代碼。此外,為了區(qū)分子窗

溫馨提示

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