![《Delphi程序設(shè)計(jì)》 教學(xué)課件 第6章_第1頁](http://file4.renrendoc.com/view/29eb0e3677b0ff902e53e46074df0ef0/29eb0e3677b0ff902e53e46074df0ef01.gif)
![《Delphi程序設(shè)計(jì)》 教學(xué)課件 第6章_第2頁](http://file4.renrendoc.com/view/29eb0e3677b0ff902e53e46074df0ef0/29eb0e3677b0ff902e53e46074df0ef02.gif)
![《Delphi程序設(shè)計(jì)》 教學(xué)課件 第6章_第3頁](http://file4.renrendoc.com/view/29eb0e3677b0ff902e53e46074df0ef0/29eb0e3677b0ff902e53e46074df0ef03.gif)
![《Delphi程序設(shè)計(jì)》 教學(xué)課件 第6章_第4頁](http://file4.renrendoc.com/view/29eb0e3677b0ff902e53e46074df0ef0/29eb0e3677b0ff902e53e46074df0ef04.gif)
![《Delphi程序設(shè)計(jì)》 教學(xué)課件 第6章_第5頁](http://file4.renrendoc.com/view/29eb0e3677b0ff902e53e46074df0ef0/29eb0e3677b0ff902e53e46074df0ef05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章多窗體程序設(shè)計(jì)當(dāng)程序比較復(fù)雜時(shí),往往需要將不同功能的程序模塊放置到不同的窗體中以便于管理,由此引出了多窗體程序設(shè)計(jì)問題。在Delphi系統(tǒng)設(shè)計(jì)中,多窗體程序有兩種形式,一種是由多個(gè)Form窗體實(shí)現(xiàn)的多窗體程序,窗體與窗體之間彼此沒有主從關(guān)系;另一種是由多文檔(Multiple
Document
Interface,MDI)窗體實(shí)現(xiàn)的多窗體程序。6.1多個(gè)Form窗體程序設(shè)計(jì)Delphi系統(tǒng)將程序功能劃分為若干子功能模塊,每個(gè)模塊放置在一個(gè)窗體中,進(jìn)入不同窗體可以使用不同的程序功能。6.1.1創(chuàng)建多個(gè)窗體當(dāng)打開Delphi開發(fā)系統(tǒng)時(shí),系統(tǒng)自動(dòng)創(chuàng)建一個(gè)Form窗體,其FormStyle屬性值默認(rèn)設(shè)
置為fsNormal,表示該窗體是一個(gè)普通窗體,與其他窗體之間沒有隸屬關(guān)系。多個(gè)Form窗體程序就是在一個(gè)程序中使用多個(gè)窗體共同實(shí)現(xiàn)整個(gè)程序的功能。New
Item對(duì)話框1.利用菜單生成多窗體(1)執(zhí)行File→New→Other命令,打開如下圖所示的New
Item對(duì)話框。(2)選擇Form圖標(biāo),單擊“OK”按鈕,即可
在當(dāng)前項(xiàng)目中添加一個(gè)名稱為Form2的窗體,
該窗體與Form1窗體在功能與特性上完全一致。通過這樣的方法,可以在項(xiàng)目中添加多個(gè)Form窗體。提示:也可執(zhí)行File→New→Form命令,直接向當(dāng)前項(xiàng)目添加一個(gè)新的窗體。2.利用代碼創(chuàng)建多窗體為了提高程序的靈活性,可以利用Create方法在項(xiàng)目中動(dòng)態(tài)地添加窗體,其語法格式如下:對(duì)象:=對(duì)象類.Create(Self);其中,對(duì)象表示通過Create方法生成的新的對(duì)象,該對(duì)象由給定的對(duì)象類生成?!纠?-1】通過代碼創(chuàng)建一個(gè)與當(dāng)前窗體相同的窗體,并指定新窗體的名稱與標(biāo)題。procedure
TForm1.FormClick(Sender:
TObject);varForm2:
TForm1;beginForm2:=TForm1.Create(self);Form2.Caption:="創(chuàng)建的窗口Form2";Form2.Width:=480;Form2.Height
:=
300;Form2.Show;end;程序運(yùn)行效果如圖6-2所示?!纠?-1】程序運(yùn)行效果提示:使用Create方法生成的新窗體功能與原有窗體功能相同,單擊新窗體,也可以再創(chuàng)建一個(gè)新窗體。6.1.2窗體操作創(chuàng)建好多個(gè)窗體后,可以顯示、隱藏、關(guān)閉某個(gè)或全部窗體。1)顯示窗體可以使用Show方法和ShowModel函數(shù)來顯示某個(gè)窗體,它們的格式分別如下:窗體名.Show;窗體名.ShowModal;Show方法與ShowModal函數(shù)的區(qū)別時(shí),
使用Show方法顯示窗體稱為非模式顯示,可以在窗體之間任意切換;使用ShowModal函數(shù)顯示窗體稱為模式顯示,只能顯示指定的窗體,不能切換到其他窗體。2)隱藏窗體當(dāng)顯示一個(gè)窗體后,如果暫時(shí)不需要訪問該窗體,可以使用Hide方法將該窗體隱藏起來,當(dāng)需要訪問時(shí)再顯示出來。Hide方法的格式如下:窗體名.Hide;提示:將暫時(shí)不使用的窗體隱藏起來,可以提高程序運(yùn)行的效率。【例6-2】編寫程序,在一個(gè)窗體中控制另一個(gè)窗體的顯示與隱藏狀態(tài)。操作步驟如下:執(zhí)行File→New→Form命令,在當(dāng)前項(xiàng)目中添加一個(gè)新的窗體Form2,其屬性值均取默認(rèn)值。在Form1窗體中添加2個(gè)Button組件,將
Caption屬性分別設(shè)置為“顯示Form2”和“隱藏Form2”。執(zhí)行File→Use
Unit命令,彈出UseUnit,如下圖所示。選中Unit2單元,單擊OK按鈕,在Form1窗體中聲明Form2窗體。Use
Unit對(duì)話框(4)為“顯示Form2”按鈕的onclick事件添加如下代碼,控制Form2窗體的顯示。procedure
TForm1.Button1Click(Sender:
TObject);beginForm2.Show;end;(5)為“隱藏Form2”按鈕的onclick事件添加如下代碼,控制Form2窗體的隱藏。procedure
TForm1.Button2Click(Sender:
TObject);beginForm2.Hide;end;3)關(guān)閉窗體當(dāng)確定窗體不再使用后,應(yīng)關(guān)閉窗體,從而釋放該窗體占用的資源。在Delphi系統(tǒng)中,通常有兩種關(guān)閉窗體的形式。一種方式是單擊關(guān)閉按鈕,另一種是使用Close方法來關(guān)閉窗體,其格式如下:窗體名.Close;提示:當(dāng)關(guān)閉窗體時(shí),由該窗體派生出的所有窗體也一同關(guān)閉。6.1.3多個(gè)窗體間的數(shù)據(jù)傳遞在多窗體程序中,各個(gè)窗體之間需要交換信息,在Delphi程序設(shè)計(jì)中通常使用公共變量來共享數(shù)據(jù)。在Delphi系統(tǒng)中,公共變量通常定義在程序單元中的接口變量處(Interface),在此處定義好變量后,其他窗體程序都可以通過引用的方式來調(diào)用這些變量。為了更好地管理公共變量,用戶往往在程序設(shè)計(jì)過程中創(chuàng)建一個(gè)獨(dú)立的Unit單元,用以定義所有的公共變量,供其它程序單元使用。下面給出定義公共變量的具體步驟。執(zhí)行File→New→Unit命令,在當(dāng)前項(xiàng)目中添加一個(gè)Unit程序單元,然后執(zhí)行File→Save
As命令,將其重命名為CommUnit.pas文件并保存。在CommUnit單元中按如下格式定義變量。unit
CommUnit;interface變量定義;implementationend.(3)當(dāng)某個(gè)程序單元需要使用公共變量時(shí),執(zhí)
行File→Use
Unit命令,在Use
Unit對(duì)話框中選擇
CommUnit單元,單擊Ok按鈕即可。下面通過實(shí)例介紹如何使用公共變量在窗體之間傳遞傳遞數(shù)據(jù)。【例6-3】設(shè)計(jì)一個(gè)成績錄入系統(tǒng),其包含一個(gè)“控制程序”主窗體、一個(gè)“錄入成績”主窗體和一個(gè)“計(jì)算成績”窗體。通過主窗體可以打開各個(gè)窗體以及退出程序?!颁浫氤绦颉贝绑w用于錄入語文、數(shù)學(xué)和外語課程的成績,錄入完畢后可返回主窗體?!坝?jì)算成績”窗體用于計(jì)算總成績與平均成績,同樣也可以返回主窗體。操作步驟如下:(1)在Form1窗體中添加3個(gè)Button組件,設(shè)計(jì)如下圖(a)所示的程序界面。(2)執(zhí)行Form→New→Form命令,在當(dāng)前項(xiàng)
目中添加一個(gè)窗體,設(shè)計(jì)窗體的界面如下圖(b)所示。(a)“控制程序”主窗體(b)“錄入成績”窗體(c)“計(jì)算成績”窗體執(zhí)行Form→New→Form命令,在當(dāng)前項(xiàng)目添加一個(gè)窗體,設(shè)計(jì)界面如上圖(c)所示。執(zhí)行File→New→Unit命令,在當(dāng)前項(xiàng)目添加一個(gè)Unit單元,執(zhí)行如下代碼,在單元中聲明公共變量。unit
CommUnit;interfacevarchinese,
math,english
:integer;total,average:integer;implementationend.執(zhí)行File→Save
As命令,將該Unit單元命名為CommonUnit.pas并保存。選中“控制程序”窗體,執(zhí)行File→Use
Unit命令,在打開的Use
Unit對(duì)話框中選中Unit2單元,然后單擊OK按鈕,完成對(duì)Unit2單元的引用操作。(7)為“錄入成績”按鈕的onclick事件添加如下代碼,實(shí)現(xiàn)單擊“錄入成績”按鈕時(shí)打開
“錄入成績”窗體。procedure
TForm1.Button1Click(Sender:
TObject);beginForm2.ShowModal;end;(8)為“計(jì)算成績”按鈕的onclick事件添加如下代碼,實(shí)現(xiàn)單擊“計(jì)算成績”按鈕時(shí)能打開“計(jì)算成績”窗體。procedure
TForm1.Button2Click(Sender:
TObject);beginForm3.ShowModal;end;(9)為“退出系統(tǒng)”按鈕的onclick事件添加如下代碼,關(guān)閉程序。procedure
TForm1.Button3Click(Sender:
TObject);beginForm1.Close;end;(10)選中“錄入成績”窗體,執(zhí)行File→UseUnit命令,在Use
Unit對(duì)話框中選擇CommUnit單元。選中“返回”按鈕,在其onclick事件中添加如下代碼,實(shí)現(xiàn)錄入數(shù)據(jù)并返回控制窗體的功能。procedure
TForm2.Button1Click(Sender:
TObject);beginchinese
:=
StrToInt(Edit1.Text);math
:=
StrToInt(Edit2.Text);english
:=
StrToInt(Edit3.Text);Form2.Close;end;(11)選中“計(jì)算成績”窗體,執(zhí)行File→UseUnit命令,在Use
Unit對(duì)話框中選擇中
CommUnit單元。在該窗體的OnCreate事件中添加如下代碼:procedure
TForm3.FormShow(Sender:
TObject);beginEdit1.Text
:=IntToStr(Chinese
+
math
+
english);Edit2.Text
:=
FloatToStr((Chinese
+
math
+
english)
/
3);end;(12)為“返回”按鈕的onclick事件添加如下代碼,關(guān)閉“計(jì)算成績”窗體并返回控制窗體。procedure
TForm3.Button1Click(Sender:
TObject);beginForm3.Close;end;6.2多文檔程序設(shè)計(jì)上一節(jié)介紹了使用多個(gè)Form窗體進(jìn)行多窗體程序的設(shè)計(jì)的方法。本節(jié)將著重介紹使用多文檔(Multiple
Document
Interface,MDI)窗體進(jìn)行程序設(shè)計(jì)的方法。在多文檔程序中,每個(gè)程序界面與相關(guān)程序稱作一個(gè)文檔,一個(gè)窗體可以有多個(gè)文檔,可以在各個(gè)文檔之間切換和傳輸數(shù)據(jù)。6.2.1創(chuàng)建多個(gè)窗體多文檔程序中有兩種類型的窗體,分別是父窗體和子窗體。父窗體父窗體是程序的基礎(chǔ),一個(gè)多文檔程序只能有一個(gè)父窗體,所有的子窗體必須在父窗體中運(yùn)行且受父窗體的控制,任何子窗體都不能超出父窗體的范圍。關(guān)閉父窗體時(shí),其所有的子窗體同時(shí)被關(guān)閉。子窗體一個(gè)多文檔程序中可以有多個(gè)子窗體。可以在子窗體中添加組件,使其成為與程序進(jìn)行交互的對(duì)象。在多文檔程序中,所有的子窗體都隸屬于一個(gè)父窗體,由父窗體控制,子窗體與父窗體共同實(shí)現(xiàn)程序的功能。6.2.2創(chuàng)建多個(gè)窗體在多文檔程序中,由父窗體統(tǒng)一管理所有的子窗體,如創(chuàng)建子窗體、獲取當(dāng)前活動(dòng)子窗體的信息、與子窗體交換信息和關(guān)閉子窗體等。1.創(chuàng)建多文檔程序建立多文檔程序的方法很簡單。由于一個(gè)多文檔程序中一定有一個(gè)父窗體和至少一個(gè)子窗體,所以可以通過下面的步驟創(chuàng)建一個(gè)簡單的多文檔程序。(1)選中需要設(shè)置為父窗體的Form窗體,將其FormStyle屬性值設(shè)置為fsMDIForm。(2)執(zhí)行File→New→Form命令,在當(dāng)前項(xiàng)目中添加一個(gè)窗體Form2,將Form2窗體的FormStyle屬性設(shè)置為fsChild,表示將其設(shè)置為子窗體。至此,完成多文檔程序界面的設(shè)置,當(dāng)程序執(zhí)行時(shí),可以得到下圖所示界面。MDI應(yīng)用程序界面2.創(chuàng)建子窗體如果希望多文檔程序啟動(dòng)時(shí)僅顯示父窗體,由用戶決定何時(shí)打開子窗體,以及打開多少個(gè)子窗體,則需要通過代碼來控制子窗體的打開。一般,先在父窗體中添加菜單和工具欄,然后通過菜單或工具欄中的“新建”命令來新建一個(gè)子窗體?!纠?-4】創(chuàng)建一個(gè)MDI應(yīng)用程序,在父窗體中通過“新建”菜單來新建一個(gè)子窗體。操作步驟如下:(1)將當(dāng)前Form窗體的FormStyle屬性值設(shè)置為fsMDIForm。在當(dāng)前窗體中添加一個(gè)MainMenu組件,在該組件中添加一個(gè)“新建”菜單,并將窗體的MainMenu屬性設(shè)置為MainMenu組件。執(zhí)行File→New→Form命令,在當(dāng)前項(xiàng)目中添加一個(gè)窗體Form2,將Form2窗體的
FormStyle屬性設(shè)置為fsMDIChild。執(zhí)行View→Units命令或按Ctrl+F12快捷鍵,打開View
Unit對(duì)話框。在對(duì)話框中選中Project1項(xiàng)目(如下圖(b)所示),單擊OK按鈕,在打開的代碼編輯器中
添加Project單元的代碼,然后將代碼中創(chuàng)建子窗體的代碼設(shè)置為注釋,如下圖(a)所示。MDI應(yīng)用程序界面
MDI應(yīng)用程序界面說明:將Project1單元代碼中創(chuàng)建子窗體的代碼設(shè)置為注釋,可以使程序執(zhí)行時(shí)只打開父窗體而不會(huì)打開子窗體。(5)執(zhí)行File→Use
Unit命令,在彈出的UseUnit對(duì)話框中選則子窗體對(duì)應(yīng)的代碼單元Unit2,單擊OK按鈕,即可在父窗體中使用子窗體。(6)選中MainMenu組件中的“新建”菜單,
為其onclick事件添加如下代碼,實(shí)現(xiàn)創(chuàng)建子窗體的功能。procedure
TForm1.N1Click(Sender:
TObject);beginApplication.CreateForm(TForm2,Form2);end;程序運(yùn)行效果如下同所示?!纠?-4】程序運(yùn)行效果3.管理子窗體多文檔程序中可以存在多個(gè)子窗體,為了更好地管理子窗體,Delphi系統(tǒng)為子窗體定義了多個(gè)參數(shù)。1)MDIChildCount屬性在父窗體中,可以訪問MDIChildCount屬性值來獲得子窗體的數(shù)目,其格式如下:Count:=主窗體.MDIChildCount;2)MDIChildren數(shù)組在創(chuàng)建子窗體時(shí),系統(tǒng)會(huì)自動(dòng)將該窗體作為數(shù)組元素保存在MDIChildren數(shù)組中。因此,父窗體可以通過下面的語句來訪問子窗體:父窗體.MDIChildren[i];該語句表示訪問父窗體中的第i+1個(gè)子窗體。例如,要將TForm2父窗體中的所有子窗體的Label屬性設(shè)置為This
is
a
test,可以使用下面的語句:For
i
:=
1
to
MDIChildCount
doTForm2(MDIChildren[
i
-
1]).Label.Caption
:=
‘This
is
atest’;3)ActiveMDIChild屬性在多文檔程序中,只能有一個(gè)子窗體為當(dāng)前活動(dòng)窗體,將某個(gè)子窗體設(shè)置為當(dāng)前活動(dòng)子窗體的語法格式如下:父窗體.ActiveMDIChild下面通過實(shí)例介紹如何在父窗體中控制子窗體?!纠?-5】編寫多文檔程序,在子窗體中創(chuàng)建
RichEdit組件,在父窗體中利用“當(dāng)前窗口”菜單項(xiàng)來設(shè)置當(dāng)前子窗體中文本的字體,使用“全部窗口”菜單項(xiàng)來設(shè)置所有子窗體中文本的字體。操作步驟如下:按照【例6-5】介紹的方法建立一個(gè)父窗體Form1和一個(gè)子窗體Form2。向Form1窗體添加一個(gè)FontDialog組件和一個(gè)MainMenu組件。設(shè)計(jì)父窗體菜單如下圖所示,并將Form1窗體中的MainMenu屬性設(shè)置為MainMenu組件的名稱。設(shè)計(jì)父窗體的菜單(4)執(zhí)行【例6-4】中的步驟(4)~(6)。(5)為“當(dāng)前窗口”菜單項(xiàng)的onclick事件添加如下代碼,設(shè)置當(dāng)前窗體中RichEdit組件中文本的字體。procedure
TForm1.N3Click(Sender:
TObject);beginFontDialog1.Execute;TForm2(ActiveMDIChild).RichEdit1.Font
:=FontDialog1.Font;end;(6)為“全部窗口”菜單項(xiàng)的onclick事件添加如下代碼,設(shè)置所有子窗體中RichEdit組件中字體的工作。procedure
TForm1.N4Click(Sender:
TObject);va
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年農(nóng)村集體土地承包合同示例
- 2025年勞動(dòng)合同與勞務(wù)合同差異對(duì)比
- 2025年航空備品項(xiàng)目提案報(bào)告
- 2025年分析儀器及裝置項(xiàng)目提案報(bào)告模板
- 2025年精細(xì)藥液過濾器項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 2025年臨時(shí)辦公租賃合同范本
- 2025年區(qū)域航空維修合作與發(fā)展協(xié)議
- 2025年合作伙伴商鋪經(jīng)營合同
- 2025年企業(yè)商業(yè)保密合同
- 2025年交通服務(wù)費(fèi)用回收協(xié)議
- 2024-2030年中國紫蘇市場深度局勢(shì)分析及未來5發(fā)展趨勢(shì)報(bào)告
- 銷售人員課件教學(xué)課件
- LED大屏技術(shù)方案(適用于簡單的項(xiàng)目)
- 城市自來水廠課程設(shè)計(jì)
- 2024智慧城市數(shù)據(jù)采集標(biāo)準(zhǔn)規(guī)范
- Lesson 6 What colour is it(教學(xué)設(shè)計(jì))-2023-2024學(xué)年接力版英語三年級(jí)下冊(cè)
- 歷年國家二級(jí)(Python)機(jī)試真題匯編(含答案)
- 第五單元任務(wù)二《準(zhǔn)備與排練》教學(xué)設(shè)計(jì) 統(tǒng)編版語文九年級(jí)下冊(cè)
- 虧損企業(yè)減虧專項(xiàng)治理方案
- 《垃圾發(fā)電廠爐渣處理技術(shù)規(guī)范》
- 設(shè)計(jì)質(zhì)量、進(jìn)度、服務(wù)保證措施
評(píng)論
0/150
提交評(píng)論