一個簡單的MDI示范程序(Delphi)
最為一個鞏固之前有關(guān)窗體和對象的有關(guān)知識,下面就建立一個簡單的MDI示范程序,這個程序的功能是打開和保存圖形文件(包括位圖、圖標(biāo)等),為了完成這個任務(wù),我們有一個大概的計劃,計劃內(nèi)容如下:
(1)建立主窗體(一個MDI父窗體),包括菜單。
(2)為【File | Open…】 和【File | Save…】菜單選項編寫代碼。
(3)為Windows菜單上的Cascade、Tile和Arrange All選項編寫代碼。
(4)建立MDI子窗體。
(5)建立一個About對話框。
(6)然后再回憶和欣賞一下這段工作。
時間就是金錢,即刻就做吧 。
一、創(chuàng)建主窗口窗體
首先創(chuàng)建一個主窗口窗體,一個MDI應(yīng)用程序的主窗口的FormStyle屬性必須設(shè)置為fsMDIForm。不但要為應(yīng)用程序增加File Open和 File Save 對話框,還要增加一個菜單。
1、啟動Delphi,并從主菜單選擇【File | New | Application】;
2、把主窗體的Name屬性設(shè)置為MainForm;
3、把Caption屬性設(shè)置為Picture Viewer;
4、把FormStyle屬性設(shè)置為fsMDIForm;
好了,下面為此窗體增加一個菜單,利用Delphi特性,引進(jìn)一個預(yù)定義菜單,具體如下:
1、點擊組件選項板的Standard標(biāo)簽,并點擊MainMenu按鈕;
2、把MainMenu組件點擊放置到窗體上,具體放到哪個地方無所謂了,因為在運行階段,代表菜單的圖標(biāo)只是占地方而不顯示,這是非可視化組件。
3、把MainMenu組件Name屬性改為MainMenu;
4、雙擊MainMenu組件,就會出現(xiàn)Menu Designer對話框;
5、在MainMenu上點擊鼠標(biāo)右鍵,選擇“Insert From Template…”,將出現(xiàn)Insert Template對話框;
6、選擇“MDI Frame Menu”并點擊OK,此菜單將顯示在Menu Designer上,關(guān)閉Menu Designer窗口。
現(xiàn)在又回到了主窗體,注意現(xiàn)在窗體上多了一條菜單,此時先不要點擊任何子菜單項,我們先準(zhǔn)備File Open對話框和File Save對話框:
1、點擊組件選項板的Dialogs標(biāo)簽,選擇Open Picture Dialog組件,并把它放到窗體上,這也是一個非可視組件。
2、把Open對話框的Name屬性改為OpenPictureDialog;
3、把Open對話框的Title屬性改為“Open a Picture for Viewing”;
4、在窗體再增加一個Save Picture Dialog組件;
5、把此組件的Name屬性改為“SavePictureDialog”,把Title屬性改為“Save a Picture”;
此時窗體看起來應(yīng)該像下圖:
二、編寫【File | Open…】和【File | Save As…】菜單選項代碼
下面就準(zhǔn)備開始編寫代碼,Delphi提供了一種很好地編寫菜單處理程序的方法,從而使遇到的麻煩最小。還不要建立MDI子窗體,但要充分了解它,并用它來為菜單處理程序編寫代碼,記住在建立MDI子窗體之前一直不要編譯應(yīng)用程序(因為還沒有建立MDI子窗體,編譯會出現(xiàn)錯誤的)
1、在主窗體上選擇【File | Open…】菜單項,這樣就會在Code Editor中為此菜單項建立一個事件處理程序。
2、為此事件處理程序鍵入下列代碼:
procedure TMainForm.Open1Click(Sender: TObject); var Child: TChild; begin if OpenPictureDialog.Execute then begin Child := TChild.Create(Self); with Child.Image.Picture do begin LoadFromFile(OpenPictureDialog.FileName); Child.ClientWidth := Width; Child.ClientHeight := Height; end; Child.Caption := ExtractFileName(OpenPictureDialog.FileName); Child.Show; end; end;