Delphi中實現MDI子表單(轉)

來源:互聯網
上載者:User

標籤:body   原始碼   響應   點擊   log   mini   函數   cti   退出   

用MDI實現瀏覽子視窗,具有視窗管理功能,同屏觀看多個網頁的內容 
  ① 多文檔表單(MDI) 
MDI表單是一種具有主子結構的表單體系,微軟的Word便是其中的一個典型例子。MDI體系中至少需要兩種表單,只能將其中之一設定為主表單,其餘表單全部則全部為子表單,主表單負責子表單的管理、切換等工作。自然,子表單上承載的內容可各不相同。Tidy瀏覽器最終實現了三種不同的表單:主表單、瀏覽子表單、原始碼子表單。 
  ② 設定表單類型 
  我們通過表單的FormStyle屬性設定表單類型,它是一個枚舉類型,可取的值包括:fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop。分別對應:普通表單, MDI子表單,MDI主表單, 普通頂部表單。 
  值得注意的是,表單的FormStyle屬性應在設計期確定,運行期間更改是不可取的。 
  ③ 子表單的建立 
  一般而言,主表單在應用程式啟動時自動建立,子表單通常在響應使用者的有關動作之後才建立。並且,同一類子表單執行個體可以多次被建立。為了避免程式啟動時即建立子表單,可通過C++Builder的Integration EnvironmentIDE上的菜單Project\Options上的Form標籤頁,將所有子表單從Auto-create forms視窗中,移至Available forms視窗。 
  ④ 子表單的關閉 
  MDI表單技術中另一個值得注意的問題是,使用者點擊MDI子表單的關閉按鈕企圖關閉子表單,系統預設的動作卻是將其最小化。為了真正的實現關閉子表單並釋放所佔用的記憶體,可在OnClose事件中將引用參數Action設定為caFree。Action的其他可取值為:caNone,caHide,caMinimize,分別對應無動作、隱藏、最小化。 
  ⑤ 主表單的重要屬性的使用 
  ActiveMDIChild屬性,指向當前活動的子表單。此乃TForm *類型的指標,必要時可強制轉換為任意類型的子表單執行個體。 
  MDIChildCount屬性,用於判斷已經建立的子表單的總數。 
  MDIChildren屬性,是一個TForm *類型的指標數組,指向目前存在的所有的子表單。結合MDIChildCount屬性,可以實現子表單的遍曆。 
  ⑥ 子表單之間的切換 
  直接引用主表單的方法Previous()、Next(),可以實現子表單的前、後切換。 
  ⑦ 子表單的布局 
  直接引用主表單的方法Tile()、Cascade(),可以實現子表單的平鋪、層疊布局。


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

delphi中判斷子表單是否開啟 (2008-10-07 15:21:52)
標籤:it 分類:DELPHI程式設計
今天在一個程式中,需要判斷子表單是否開啟,寫了這段代碼共用出來


在一個MDI表單中限制開啟多個子表單,採用遍曆的方式判斷子表單是否已經存在:

procedure Tf_Main.btnUpdateClick(Sender: TObject);
var
i:Integer;
begin
for i :=0 to f_main.MDIChildCount -1 do //MDIChildCount:總的子表單個數
if (f_main.MDIChildren[i] is Tf_Pass) then //判斷子表單是否存在
begin
self.MDIChildren[i].BringToFront; //把表單放在最前面
MDIChildren[i].SetFocus; //表單獲得焦點
Exit; //退出函數體

end;

//建立新表單
Application.CreateForm(Tf_Pass,f_Pass);
f_Pass.Show;
end;


允許單擊關閉按鈕時關閉子表單:

procedure Tf_Pass.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
f_Pass := nil;
end;

Delphi中實現MDI子表單(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.