?? chapt13.htm
字號:
<html><head><title>第十三章 MDI編程</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body bgcolor="#00000" text="#00cc66"><p align="center"><b><font color="#FF6666" size="4">第十三章 MDI編程</font></b></p><p> 在開發一個多窗體的Windows應用程序時,可選擇下面兩種基本思路建立整個應用界面。<br> (1)多文檔界面(MDI)<br> (2)單文檔界面(SDI)<br> 事實上,我們前面講過的例子都是單文檔界面(SDI),這種界面的一個特點就是程序只由一個單獨的窗口組成(當然,你也可以在SDI應用程序中設計多個窗口,如彈出窗口等)。<br> 每個界面類型都提供特色,向用戶展示它們的應用。MDI應用程序已被認作是“真正的”Windows類型。在Delphi中,你可以通過選擇MDI模板來開始一個MDI程序的設計,但在本章中,我們將主要詳細討論學習建立一個MDI應用程序的基本步驟,讓讀者進一步掌握Delphi編程的技巧,并在最后介紹MDI模板的使用。<br> Delphi允許用戶創建支持多文檔界面(MDI)標準的Windows應用程序。MDI應用程序的樣例是Microsoft Word、Microsoft Excel和大多數支持一次裝入多個文件的Windows文本編輯器(見圖13.1)。本節主要介紹創建允許MDI的應用程序。<br> 每個MDI應用程序都有一個MDI父窗口,內有一個用戶區可顯示MDI子窗口(或多個子窗口)。MDI子窗口限制在用戶區內,也就是說子窗口不能擴大出父窗口的窗口邊界。MDI子窗口可在用戶區內任一處極小化,極大化或改變尺寸,典型的MDI能并排和重疊MDI子窗口,以及排列極小化子窗口的圖標。MDI父窗口包括應用程序的主菜單,用于操作沒有菜單的MDI子窗口。<br> <b>13.1 建立MDI父窗體和子窗體</b><br> MDI應用程序由兩個以上的窗體組成。一個單窗體MDI應用程序是自相矛盾的,應作為一個SDI應用程序來開發。所有的MDI應用程序必須有一個父窗口,里面至少有一個單MDI子窗口。為了在Delphi中實現這種關系,需要在項目中管理至少兩個獨立的窗體。<br> 創建MDI應用程序最簡單的辦法是使用Delphi自己的MDI應用項目樣板。下面各節將介紹如何從頭建立一個MDI應用程序,而不使用MDI應用項目樣板。<br> 下面的步驟介紹了如何快速從頭開始創建一個包括MDI父和子窗口的MDI應用程序。單個元素所涉及的細節,如窗體的FormStyle特性,按照下列步驟進行:<br> (1)打開File菜單并選擇New Application,或者選擇File菜單的New命令,在New Item對話框的New標簽頁,選擇Aplication選項。<br> (2)設置窗體的FormStyle特性為fsMDIForm,將其作為一個MDI父窗體。<br> (3)為MDI父窗體取名為frmMDIParent,對應代碼單元起名為MDIParent。<br> (4)打開File菜單并選擇New Form,增加另一個窗體用作MDI子窗口,這將在項目中增加一個新的窗體和代碼單元。<br> (5)設置子窗體的FormStyle特性為fsMDIChild,將其作為一個MDI子窗體。<br> (6)打開Project Options對話框,從中選擇Forms頁(見圖13.3),將子窗體從Auto-create窗體列表移到Available窗體列表中。<br> (7)為MDI子窗體取名為frmMDIChild,對應的代碼單元取名為MDIChild。<br> 一旦完成以上各步,打開View菜單并選擇Project Manager。在ProjectManager對話框,你會發現程序定義了兩個窗體(見圖13.2)。其對應的代碼單元:<br> 在創建MDI父窗體和子窗體時應注意的幾點問題:<br> (1)MDI父窗體必須是應用程序的主窗體。如果MDI父窗體不是主窗體,則應用程序不能被正確編譯。要確認一個窗體是否為主窗體,可以使用Project菜單中的Options命令,打開Project Options對話框,從中選擇Forms頁(見圖13.3)。從中你也可以設置一個窗口為主窗體。<br> (2)每個程序只能有一個父窗體,即只能有一個窗體的窗體風格為fsMDIForm,而子窗體可以有一到多個。<br> (3)應用程序的主窗體的窗體風格不能設置為fsMDIChild。<br> (4)程序運行時,可以創建子窗體的多個實例,僅受系統資源的限制。因此,通常 MDI子窗體不應該放在Auto-create窗體列表中,而是放在Available窗體列表中,將子窗體從Auto-create窗體列表去掉。但是,如果程序的子窗體在運行時只有一個實例,也可以不將其從Auto-create列表中去掉。<br> MDI應用程序父窗口的菜單條是應用程序的主菜單。如果應用程序的的子窗口包含有菜單條,則在程序運行時,獲得焦點的子窗口的菜單項會合并到主窗口菜單條上。<br> 主窗口中的File和Window菜單項控制的是主窗口的功能,而不是某個特定的子窗口。當用戶選擇File菜單中New命令或Open命令時,打開一個子窗口,這時應用程序菜單增加兩個新的菜單項。<br> 這里File、Edit、Character是子窗口的菜單項,用于控制子窗口的功能。當子窗口激活時,子窗口的菜單項被合并到主窗口菜單條上(如Edit和Character菜單項),或替代了原主菜單的菜單項(如File菜單項)。<br> 請注意菜單的GroupIndex特性,該特性決定合并菜單顯示在共享菜單條上的順序,缺省值為0,但通過改變該值,可以決定合并菜單項是插入還是替換原主菜單項。下面是定義GroupIndex值的幾條規則:<br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -