多文檔界面設(shè)計(jì)_第1頁
多文檔界面設(shè)計(jì)_第2頁
多文檔界面設(shè)計(jì)_第3頁
多文檔界面設(shè)計(jì)_第4頁
多文檔界面設(shè)計(jì)_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章 多文檔界面設(shè)計(jì),6.1 組件 6.2 父窗體的設(shè)計(jì) 6.3 子窗體的設(shè)計(jì) 6.4 關(guān)于窗體設(shè)計(jì) 6.5 編寫程序代碼 6.6 編譯運(yùn)行程序 6.7 小結(jié) 習(xí)題六,6.1 組 件 使用的組件主要有以下幾個(gè): (1)主菜單欄:用于執(zhí)行相關(guān)操作的命令,在主窗體上 使用。 (2)工具欄:用于執(zhí)行常用操作的命令,在主窗體上使用。 (3)狀態(tài)欄:用于顯示應(yīng)用程序執(zhí)行的狀態(tài)。 (4)TImageList組件:用于修飾菜單和工具欄,把它們設(shè)計(jì)成圖標(biāo)菜單和圖標(biāo)工具欄。,(5)對話框組件:用于特定的目的對話框,包括保存文件對話框、打開文件對話框、顏色對話框和字體對話框等。 (6)彈出式菜單:用于在TRic

2、hEdit組件中單擊鼠標(biāo)右鍵。 (7)TRichEdit組件:用于編輯文本。 (8)TActionList組件:用于關(guān)聯(lián)菜單和工具欄,以盡量達(dá)到少編寫代碼的目的。 (9)TTimer組件:用于在狀態(tài)欄顯示系統(tǒng)時(shí)間。,6.2 父窗體的設(shè)計(jì) 新建一個(gè)項(xiàng)目,將Form1設(shè)置為父窗體,即默認(rèn)時(shí)為主窗體。當(dāng)運(yùn)行時(shí)此窗體需要最大化顯示,下面講述設(shè)置主窗體的 屬性。 6.2.1 窗體Form1屬性設(shè)置 窗體Form1屬性的主要設(shè)置如下: (1)Caption屬性:設(shè)置標(biāo)題名為“多文檔程序”。 (2)FormStyle屬性:屬性值設(shè)置為fsMDIForm。這是設(shè)置父窗體的重要一步。,(3)Icon屬性:設(shè)置標(biāo)

3、題欄最左側(cè)的圖標(biāo)。單擊Icon屬性選項(xiàng)左側(cè)的 按鈕,可以從計(jì)算機(jī)*.Ico格式的圖標(biāo)中選擇一個(gè)合適的圖標(biāo)。 (4)WindowState屬性:屬性值設(shè)置為wsMaximized,當(dāng)啟動(dòng)應(yīng)用程序時(shí),主窗體以最大化形式顯示在屏幕中。 6.2.2 菜單的設(shè)計(jì) 雙擊工具面板上的“TMainMenu”組件,在窗體中顯示主菜單的 圖標(biāo),雙擊該圖標(biāo),打開菜單設(shè)計(jì)器,在菜單設(shè)計(jì)器中設(shè)計(jì)菜單。菜單設(shè)計(jì)器如圖6.2.1所示。,其中,編輯菜單、格式菜單和窗口菜單在其子窗體中設(shè)計(jì)成動(dòng)態(tài)菜單,即菜單的合并。,圖6.2.1 菜單設(shè)計(jì)器,設(shè)計(jì)復(fù)選菜單時(shí),在“查看”下拉菜單中,有兩個(gè)菜單項(xiàng),即工具欄和狀態(tài)欄。若“工具欄”菜單

4、項(xiàng)為選中“工具欄”狀態(tài),則顯示工具欄;若“工具欄”菜單項(xiàng)為未選中“工具欄”狀態(tài),則不顯示工具欄。 最后設(shè)計(jì)添加TImageList組件,并設(shè)置圖標(biāo),此組件支持的格式有*.Ico和*.bmp。把圖標(biāo)添加到菜單中。 注意:設(shè)計(jì)菜單時(shí)最好把熱鍵和快捷鍵也設(shè)計(jì)在內(nèi)。,6.2.3 工具欄的設(shè)計(jì) 添加TCoolBar工具欄,其作用是作為容器存放TToolBar工具欄。然后再添加兩個(gè)TToolBar工具欄,一個(gè)用于設(shè)計(jì)常用工具欄,一個(gè)用于設(shè)計(jì)格式工具欄。 1ToolBar1常用工具欄設(shè)計(jì) 在常用工具欄中,有“新建”、“打開”、“保存”、“剪切”、“復(fù)制”和“粘貼”按鈕。 (1)用鼠標(biāo)右鍵單擊ToolBar1

5、工具欄,在彈出的快捷菜單中選擇“New Button”命令,即可創(chuàng)建按鈕。 (2)設(shè)置ToolBar1工具欄和ImageList1組件關(guān)聯(lián)。,2ToolBar2格式工具欄設(shè)計(jì) 在格式工具欄中,有“粗體”、“斜體”、“下畫線”、“左對齊”、“居中對齊”和“右對齊”按鈕。 (1)用鼠標(biāo)右鍵單擊ToolBar2工具欄,在彈出的快捷菜單中選擇“New Button”命令,即可創(chuàng)建按鈕。 (2)工具欄復(fù)選按鈕設(shè)計(jì)。其中有加粗、傾斜和下畫線按鈕要設(shè)置為復(fù)選按鈕。設(shè)置這組按鈕時(shí),Style屬性值為tbsCheck。,(3)工具欄單選按鈕設(shè)計(jì)。其中有左對齊、居中對齊和右對齊按鈕組,設(shè)計(jì)單選按鈕要設(shè)置的屬性有G

6、rouped屬性和Style屬性。如果全選需要設(shè)置單選按鈕的按鈕組,設(shè)置這組按鈕的Grouped屬性值為true,Style屬性值為tbsCheck。 工具欄的設(shè)置如圖6.2.2所示。,圖6.2.2 工具欄的設(shè)置,6.2.4 狀態(tài)欄的設(shè)計(jì) 添加狀態(tài)欄并劃分為4個(gè)區(qū)域,其作用分別如下: 第一個(gè)區(qū)域:用于設(shè)置指向按鈕的提示信息。 第二個(gè)區(qū)域:用于設(shè)置打開的或者保存后的文件是否被修改。 第三個(gè)區(qū)域:用于顯示系統(tǒng)的日期時(shí)間。 第四個(gè)區(qū)域:用于顯示“歡迎使用多文檔程序”語句。,6.3 子窗體的設(shè)計(jì) 設(shè)計(jì)子窗體,首先新建一個(gè)窗體,選擇“New”“VCL Form”命令,即可創(chuàng)建第二個(gè)窗體Form2。 6.

7、3.1 窗體Form2屬性設(shè)置 窗體Form2屬性設(shè)置如下: (1)FormStyle屬性:屬性值設(shè)置為fsMDIChild。 (2)Icon屬性:用于設(shè)置子窗體標(biāo)題欄左側(cè)的圖標(biāo)。 (3)Caption屬性:設(shè)置為空,可以在打開此窗體時(shí)命名。,(4)設(shè)置Form2在應(yīng)用程序啟動(dòng)時(shí)不自動(dòng)啟動(dòng),選擇“Project”“Options”命令,彈出“Project Options for Project1.exe”對話框,將“Auto-create forms”列表框中的Form2移到“Available forms”列表框中,即可實(shí)現(xiàn)啟動(dòng)應(yīng)用程序時(shí)不啟動(dòng)Form2,如圖6.3.1所示。,圖6.3.1

8、 “Project Options for Project1.exe”對話框,6.3.2 Form2菜單設(shè)計(jì) 添加主菜單組件,添加菜單項(xiàng)“編輯”、“格式”和“窗口”,設(shè)計(jì)主菜單如圖6.3.2所示。,圖6.3.2 Form2主菜單,1菜單合并技術(shù) 菜單合并技術(shù)是指在主窗體的主菜單不隱藏的基礎(chǔ)上直接插入子窗體的主菜單,也可以替換部分或者全部主菜單。一般地,不但主窗體上有主菜單,而且子窗體上也自帶主菜單。當(dāng)子窗 體獲得焦點(diǎn)時(shí),需要合并整個(gè)應(yīng)用程序的主菜單和子窗體的主 菜單。 如果直接運(yùn)行以上程序,當(dāng)子窗體獲得焦點(diǎn)時(shí),主窗體的主菜單消失,此位置顯示子窗體的主菜單,如圖6.3.3所示。,菜單的合并主要是

9、設(shè)置菜單項(xiàng)的GroupIndex屬性,默認(rèn)值為0。若不同窗體的菜單的GroupIndex屬性值相同,子窗體未被激活時(shí),則顯示主窗體的主菜單;如果子窗體被激活,則顯示子窗體的主菜單,而不顯示主窗體的主菜單。如果使兩個(gè)窗體的主菜單都顯示,則只設(shè)置子窗體的GroupIndex屬性即可。,圖6.3.3 子窗體的主菜單,GroupIndex屬性值越小,菜單的位置越靠左。主窗體的主菜單中有“文件”、“查看”、“幫助”;子窗體的主菜單中有“編輯”、“格式”、“窗口”。 若設(shè)計(jì)子窗體獲得焦點(diǎn)時(shí)顯示的菜單為“文件”、“編輯”、“查看”、“格式”、“窗口”、“幫助”,則應(yīng)設(shè)置主窗體中“文件”的GroupIndex

10、屬性值為1,“查看”的GroupIndex屬性值為3,“幫助”的GroupIndex屬性值為6;設(shè)置子窗體中“編輯”的GroupIndex屬性值為2,“格式”的GroupIndex屬性值為4,“窗口”的GroupIndex屬性值為5。設(shè)置完畢,單擊“運(yùn)行”按鈕 ,運(yùn)行界面如圖6.3.4 所示。,2菜單覆蓋技術(shù) 有時(shí)需要用到菜單覆蓋技術(shù),與菜單合并技術(shù)原理相似。當(dāng)GroupIndex屬性值相同時(shí)即可覆蓋,如果主窗體中主菜單的“文件”的GroupIndex屬性值為1,則子窗體中主菜單“編輯”的GroupIndex屬性值也為1。運(yùn)行程序即可完成子窗體的主菜單“編輯”覆蓋主窗體的主菜單“文件”。,圖6

11、.3.4 運(yùn)行界面,6.3.3 TRichEdit組件 添加TRichEdit組件,用于編輯文本,它是子窗體中占用面積最大的一個(gè)組件。 TRichEdit組件屬性如下: (1)Align屬性:設(shè)置此屬性值為alClient,使該組件充滿菜單以外的剩余空間。 (2)ScrollBar屬性:設(shè)置此屬性值為ssBoth,當(dāng)文字到達(dá)右邊界或底邊界時(shí),出現(xiàn)水平滾動(dòng)條或垂直滾動(dòng)條。 6.3.4 TPopupMenu組件 添加彈出式菜單,并設(shè)計(jì)復(fù)制、剪切、粘貼、全選菜單,如圖6.3.5所示。,6.3.5 TActionList組件 添加TActionList組件并設(shè)置復(fù)制、粘貼、剪切、全選選項(xiàng)。將Actio

12、nList1組件和PopupMenu1組件關(guān)聯(lián)并將ActionList1組件和MainMenu1組件關(guān)聯(lián)。 將RichEdit1的PopupMenu屬性值設(shè)置為PopupMenu1。當(dāng)運(yùn)行程序時(shí),單擊鼠標(biāo)右鍵即可彈出快捷菜單。,圖6.3.5 彈出式菜單設(shè)計(jì),6.4 關(guān)于窗體設(shè)計(jì) 新建窗體Form3,此窗體只是版本聲明之類的對話框,只需要設(shè)置屬性值。 1窗體Form3屬性設(shè)置 (1)Caption屬性:其屬性值設(shè)置為“關(guān)于多文檔程序”。 (2)BorderStryle屬性:其屬性值設(shè)置為bsDialog。 (3)Position屬性:其屬性值設(shè)置為poDesktopCenter。 2TImage

13、組件 添加TImage組件,默認(rèn)名為Image1,選擇Image1屬性選項(xiàng)卡中的picture屬性,添加一幅具有一定意義的圖片。,3TLabel組件 添加組件并設(shè)置組件的屬性。 (1)Caption屬性:其屬性值設(shè)置為“多文檔程序1.0版,版權(quán)所有(c)拷貝必糾”。 (2)AutoSize屬性:其屬性值設(shè)置為false。 (3)WordWrap屬性:其屬性值設(shè)置為true。 4TButton組件 添加組件并設(shè)置按鈕的屬性。 (1)Caption屬性:其屬性值設(shè)置為確定。 (2)Default屬性:其屬性值設(shè)置為true。,按鈕中的程序代碼如下: procedure TForm3.Button1

14、Click(Sender: TObject); begin close; end; 設(shè)置后的界面如圖6.4.1所示。,圖6.4.1 關(guān)于多文檔程序設(shè)計(jì)界面,6.5 編寫程序代碼 界面設(shè)計(jì)已經(jīng)完成,下一步是編寫程序代碼。 6.5.1 主窗體的工具欄 添加工具欄中按鈕的程序代碼。 1“新建”按鈕程序代碼 (1)完成新建一個(gè)子窗體功能,雙擊“新建”按鈕,添加程序代碼如下: procedure TForm1.ToolButton1Click(Sender: TObject);,begin /由于應(yīng)用程序未完成自動(dòng)生成窗體Form2 form2:=tform2.Create(application);

15、form2.Show; /子窗體的標(biāo)題名 form2.Caption :=文檔+inttostr(mdichildcount); end; (2)當(dāng)鼠標(biāo)指向“新建”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“新建”,完成此功能,其事件和程序代碼如下:,procedure TForm1.ToolButton1MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); Begin /StatusBar1.Panels0指向狀態(tài)欄的第一區(qū)域 StatusBar1.Panels0.Text:= 新建 end;,2“打開”按鈕程序代碼 (1)添加組件

16、TOpenDialog,并雙擊“打開”按鈕,添加程序代碼如下: procedure TForm1.ToolButton2Click(Sender: TObject); begin /判斷子窗體是否打開 if mdichildcount=0 then ToolButton1.Click; if OpenDialog1.Execute then begin,form2.RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName); /打開的文件路徑賦值給變量 filepath:=OpenDialog1.FileName; end else ; end;,其中

17、,單擊“保存”按鈕時(shí),要考慮保存路徑。所以設(shè)置單元變量filepath代碼如下: implementation uses Unit2; uses Unit3; var /保存路徑 filepath:string;,(2)當(dāng)鼠標(biāo)指向“打開”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“打開”,完成此功能,其事件和程序代碼如下: procedure TForm1.ToolButton2MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); begin /狀態(tài)欄的提示標(biāo)記信息為打開 StatusBar1.Panels0.Text:= 打開; e

18、nd;,3“保存”按鈕程序代碼 (1)添加組件TSaveDialog,“保存”按鈕程序代碼的功能是當(dāng)用戶打開文件時(shí),單擊此按鈕自動(dòng)保存到原文件中;當(dāng)用戶新建文件時(shí),單擊“保存”按鈕,彈出“保存”對話框,用戶保存完畢將狀態(tài)欄上的修改標(biāo)記清空。 程序代碼如下: procedure TForm1.ToolButton3Click(Sender: TObject); begin if filepath then,begin form2.RichEdit1.Lines.SaveToFile(filepath); /狀態(tài)欄的修改標(biāo)記 StatusBar1.Panels1.Text :=; end else

19、 begin if SaveDialog1.Execute then begin,form2.RichEdit1.Lines.SaveToFile(SaveDialog1.FileName); /狀態(tài)欄的修改標(biāo)記 StatusBar1.Panels1.Text :=; end else ; end; end;,(2)當(dāng)鼠標(biāo)指向“保存”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“保存”,完成此功能,其事件和程序代碼如下: procedure TForm1.ToolButton3MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); beg

20、in /狀態(tài)欄的提示標(biāo)記信息為保存 StatusBar1.Panels0.Text:= 保存; end;,4“粗體”按鈕程序代碼 (1)“粗體”按鈕的功能是加粗子窗體中RichEdit1選中文字的字體。 程序代碼如下: procedure TForm1.ToolButton8Click(Sender: TObject); begin with form2.richedit1.SelAttributes do begin,if ToolButton8.Down then Style:=Style+fsbold else Style:=Style-fsbold; end; end; (2)當(dāng)鼠標(biāo)指

21、向“粗體”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“粗體”,完成此功能,其事件和程序代碼如下:,procedure TForm1.ToolButton8MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); begin /狀態(tài)欄的提示標(biāo)記信息為粗體 StatusBar1.Panels0.Text:= 粗體; end;,5“斜體”按鈕程序代碼 (1)“斜體”按鈕的功能是傾斜子窗體中RichEdit1選中文字的字體。 程序代碼如下: procedure TForm1.ToolButton9Click(Sender: TObject); b

22、egin with form2.richedit1.SelAttributes do begin,if ToolButton9.Down then Style:=Style+fsItalic else Style:=Style-fsItalic; end; end; (2)當(dāng)鼠標(biāo)指向“斜體”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“斜體”,完成此功能,其事件和程序代碼如下:,procedure TForm1.ToolButton9MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); begin /狀態(tài)欄的提示標(biāo)記信息為斜體 Stat

23、usBar1.Panels0.Text:= 斜體; end; 6“下畫線”按鈕程序代碼 (1)“下畫線”按鈕的功能是給子窗體中RichEdit1選中文字的字體加下畫線。 程序代碼如下:,procedure TForm1.ToolButton10Click(Sender: TObject); begin with form2.richedit1.SelAttributes do begin if ToolButton10.Down then Style:=Style+fsUnderline else,Style:=Style-fsUnderline; end; end; (2)當(dāng)鼠標(biāo)指向“下畫線

24、”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“下畫線”,完成此功能,其事件和程序代碼如下: procedure TForm1.ToolButton10MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); begin,/狀態(tài)欄的提示標(biāo)記信息為下畫線 StatusBar1.Panels0.Text:= 下畫線; end; 7“左對齊”按鈕程序代碼 (1)“左對齊”按鈕的功能是設(shè)置子窗體中RichEdit1的段落為左對齊。 程序代碼如下: procedure TForm1.ToolButton12Click(Sender: TObject)

25、;,begin /設(shè)置左對齊 form2.richedit1.Paragraph.Alignment:=taLeftJustify; end; (2)當(dāng)鼠標(biāo)指向“左對齊”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“左對齊”,完成此功能,其事件和程序代碼如下: procedure TForm1.ToolButton12MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer);,begin /狀態(tài)欄的提示標(biāo)記信息為左對齊 StatusBar1.Panels0.Text:= 左對齊; end; 8“居中對齊”按鈕程序代碼 (1)“居中對齊”按鈕的

26、功能是設(shè)置子窗體中RichEdit1的段落為居中對齊。 程序代碼如下: procedure TForm1.ToolButton13Click(Sender: TObject);,begin /設(shè)置居中對齊 form2.richedit1.Paragraph.Alignment:=taCenter; end; (2)當(dāng)鼠標(biāo)指向“居中對齊”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“居中對齊”,完成此功能,其事件和程序代碼如下:,procedure TForm1.ToolButton13MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer);

27、 begin /狀態(tài)欄的提示標(biāo)記信息為居中對齊 StatusBar1.Panels0.Text:= 居中對齊; end;,9“右對齊”按鈕程序代碼 (1)“右對齊”按鈕的功能是設(shè)置子窗體中RichEdit1的段落為右對齊。 程序代碼如下: procedure TForm1.ToolButton14Click(Sender: TObject); begin /設(shè)置右對齊 form2.richedit1.Paragraph.Alignment:=taRightJustify; end;,(2)當(dāng)鼠標(biāo)指向“右對齊”按鈕時(shí),在狀態(tài)欄第一個(gè)區(qū)域中提示“右對齊”,完成此功能,其事件和程序代碼如下: pro

28、cedure TForm1.ToolButton14MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); begin /狀態(tài)欄的提示標(biāo)記信息為右對齊 StatusBar1.Panels0.Text:= 右對齊; end;,10復(fù)制、剪切、粘貼按鈕程序代碼 由于復(fù)制、剪切、粘貼按鈕是關(guān)聯(lián)ActionList組件,所以不需要任何代碼即可實(shí)現(xiàn)其功能。當(dāng)鼠標(biāo)指向該按鈕時(shí),在狀態(tài)欄提示復(fù)制、剪切、粘貼標(biāo)記。這3個(gè)按鈕的程序代碼如下: procedure TForm1.ToolButton5MouseMove(Sender: TObje

29、ct; Shift: TShiftState;X, Y: Integer); begin /狀態(tài)欄的提示標(biāo)記信息為剪切,StatusBar1.Panels0.Text:= 剪切; end; procedure TForm1.ToolButton6MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); begin /狀態(tài)欄的提示標(biāo)記信息為復(fù)制 StatusBar1.Panels0.Text:= 復(fù)制; end;,procedure TForm1.ToolButton7MouseMove(Sender: TObject; Shif

30、t: TShiftState;X, Y: Integer); begin /狀態(tài)欄的提示標(biāo)記信息為粘貼 StatusBar1.Panels0.Text:= 粘貼; end;,6.5.2 主窗體的菜單欄 添加菜單欄中菜單項(xiàng)的程序代碼。 1“文件”下拉菜單 (1)“新建”菜單項(xiàng):完成“新建”按鈕的功能。 程序代碼如下: procedure TForm1.N2Click(Sender: TObject); begin toolbutton1.Click ; end;,(2)“打開”菜單項(xiàng):完成“打開”按鈕的功能。 程序代碼如下: procedure TForm1.N3Click(Sender: TO

31、bject); begin toolbutton2.Click ; end;,(3)“保存”菜單項(xiàng):完成“保存”按鈕的功能。 程序代碼如下: procedure TForm1.N4Click(Sender: TObject); begin toolbutton3.Click ; end;,(4)“另存為”菜單項(xiàng):完成重新保存的功能,如果單擊保存窗體上的“保存”按鈕,彈出“保存”對話框,單擊“確定”按鈕即可保存,并把狀態(tài)欄的修改標(biāo)記變?yōu)榭眨划?dāng)單擊“取消”按鈕時(shí),執(zhí)行空語句。 程序代碼如下: procedure TForm1.N5Click(Sender: TObject); begin if S

32、aveDialog1.Execute then begin,form2.RichEdit1.Lines.SaveToFile(SaveDialog1.FileName); /狀態(tài)欄的修改標(biāo)記 StatusBar1.Panels1.Text :=; end else ; end;,(5)“關(guān)閉”菜單項(xiàng):完成關(guān)閉子窗體的功能,如果子窗體的個(gè)數(shù)為0,則不執(zhí)行語句;否則關(guān)閉活動(dòng)子窗體。 程序代碼如下: procedure TForm1.N8Click(Sender: TObject); begin if mdichildcount=0 then else activemdichild.Close; e

33、nd;,其中,此段語句不能把子窗體關(guān)閉,還需要銷毀子窗體,需要在子窗體的關(guān)閉事件中編寫程序,程序代碼如下: procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin action:=cafree; end;,(6)“退出”菜單項(xiàng):完成關(guān)閉子窗體和主窗體的功能。 程序代碼如下: procedure TForm1.N9Click(Sender: TObject); begin close; end; 2“查看”下拉菜單 (1)“工具欄”菜單項(xiàng):用于顯示或隱藏工具欄。 程序代碼如下:,procedure

34、TForm1.N20Click(Sender: TObject); begin if n20.Checked then CoolBar1.Visible :=true else CoolBar1.Visible :=false; end;,(2)“狀態(tài)欄”菜單項(xiàng):用于顯示或隱藏狀態(tài)欄。 程序代碼如下: procedure TForm1.N21Click(Sender: TObject); begin if n21.Checked then statusbar1.Visible :=true else statusbar1.Visible :=false; end;,3“幫助”下拉菜單 “關(guān)于多

35、文檔程序”菜單項(xiàng):用于顯示窗體form3。 程序代碼如下: procedure TForm1.N23Click(Sender: TObject); begin form3.show; end;,6.5.3 主窗體的Timer組件 添加Timer組件,其功能是將系統(tǒng)的時(shí)間和日期返回到狀態(tài)欄的第三個(gè)區(qū)域。 程序代碼如下: procedure TForm1.Timer1Timer(Sender: TObject); begin StatusBar1.Panels2.Text:= formatdatetime(“今日是:”dddddd ddd “ 時(shí)間:”h“:” n “:”s,now); end;,

36、6.5.4 主窗體其他事件 關(guān)于主窗體的其他事件程序代碼。 1關(guān)閉詢問 當(dāng)窗體關(guān)閉時(shí),若未保存文件,則彈出對話框詢問是否保存。當(dāng)用戶單擊“是”按鈕時(shí),保存文檔并退出;當(dāng)用戶單擊“否”按鈕時(shí),不保存文檔直接退出;當(dāng)用戶單擊“取消”按鈕時(shí),關(guān)閉詢問對話框。,程序代碼如下: procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var /保存用戶單擊按鈕的信息 answer:integer; begin /統(tǒng)計(jì)是否有子窗體存在,if mdichildcount0 then begin if form2.Ric

37、hEdit1.Modified then begin /彈出詢問對話框 answer:=messagedlg(文件未保存,是否退出多文檔程序?,mtConfirmation, mbyes,mbno,mbcancel,0);,if answer=mryes then ToolButton3.Click else if answer=mrno then canclose:=true else canclose:=false; end; end; end;,2狀態(tài)欄的提示標(biāo)記信息 用于當(dāng)鼠標(biāo)移到主窗體時(shí),狀態(tài)欄第一個(gè)區(qū)域的提示。 程序代碼如下: procedure TForm1.FormMouseM

38、ove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin /狀態(tài)欄的提示 StatusBar1.Panels0.Text :=主窗體; end;,6.5.5 子窗體主菜單 子窗體中主菜單的程序代碼。 1“格式”下拉菜單 (1)“字體”菜單項(xiàng):用于設(shè)置RichEdit1的字體,添加一個(gè)TFontDialog組件。 程序代碼如下: procedure TForm2.N10Click(Sender: TObject); begin,if FontDialog1.Execute then richedit1.Font.Assign(F

39、ontDialog1.Font); end; (2)“背景”菜單項(xiàng):用于設(shè)置RichEdit1的背景顏色,添加一個(gè)TColorDialog組件。 程序代碼如下: procedure TForm2.N11Click(Sender: TObject); begin,if ColorDialog1.Execute then richedit1.Color :=ColorDialog1.Color; end; 2“窗口”下拉菜單 此菜單用于設(shè)置子窗體的排列方式。排列方式有層疊、水平平鋪、垂直平鋪和排列圖標(biāo)。 (1)“層疊”菜單項(xiàng):用于設(shè)置多個(gè)子窗體為層疊排列方式,只顯示子窗體的標(biāo)題欄,如圖6.5.1所

40、示。,程序代碼如下: procedure TForm2.Y1Click(Sender: TObject); begin /層疊 form1.cascade; end;,圖6.5.1 子窗體為層疊排列方式,(2)“水平平鋪”菜單項(xiàng):使所有打開的子窗體都顯示,彼此之間不重疊,界面如圖6.5.2所示。 程序代碼如下: procedure TForm2.Z1Click(Sender: TObject); begin /水平平鋪 form1.TileMode :=tbhorizontal; form1.Tile; end;,(3)“垂直平鋪”菜單項(xiàng):使打開的子窗體為垂直平鋪排列方式。,圖6.5.2 子窗

41、體為水平平鋪排列方式,程序代碼如下: procedure TForm2.H1Click(Sender: TObject); begin /垂直平鋪 form1.TileMode :=tbvertical; form1.Tile; end;,(4)“排列圖標(biāo)”菜單項(xiàng):當(dāng)子窗體最小化時(shí),排列其最小化子窗體的圖標(biāo),這樣可以使最小化的子窗體重新排列。 程序代碼如下: procedure TForm2.N6Click(Sender: TObject); begin form1.ArrangeIcons; end;,注意:子窗體的排列是相對父窗體而言的,不是子窗體,因此在語句前面加上Form1。 (5)“

42、關(guān)閉所有的窗口”菜單項(xiàng):其功能是關(guān)閉所有打開的子窗體。 程序代碼如下: procedure TForm2.N8Click(Sender: TObject); var i:integer; begin,with form1 do begin for i:=MDIChildCount-1 downto 0 do MDIChildreni.Close; end; end; 6.5.6 子窗體的RichEdit1組件 子窗體中RichEdit1組件的代碼主要用于一些提示信息。,1狀態(tài)欄的修改標(biāo)記 前面已經(jīng)敘述當(dāng)保存文件時(shí)把狀態(tài)欄的修改標(biāo)記變?yōu)榭?,表示保存文件;?dāng)RichEdit1中的內(nèi)容改變時(shí),要把狀

43、態(tài)欄的修改標(biāo)記變?yōu)椤靶薷摹?。只需要在子窗體的RichEdit1組件的Change事件中編寫程序代碼。 程序代碼如下: procedure TForm2.RichEdit1Change(Sender: TObject);,begin /狀態(tài)欄的修改標(biāo)記 form1.StatusBar1.Panels1.Text :=修改; end; 2狀態(tài)欄的提示標(biāo)記信息 當(dāng)鼠標(biāo)移到正文中時(shí),狀態(tài)欄的提示標(biāo)記為“正文”。,程序代碼如下: procedure TForm2.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin /狀態(tài)欄的修改標(biāo)記 form1.StatusBar1.Panels0.Text :=正文; end;,6.6 編譯運(yùn)行程序 程序編寫完成后編譯成可執(zhí)行文件,可以脫離Delphi運(yùn)行。實(shí)際上在設(shè)計(jì)程序過程中,當(dāng)單擊“運(yùn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論