簡體   English   中英

帶FireMonkey的MDI接口

[英]MDI interface with FireMonkey

是否可以使用FireMonkey以傳統意義上的許多文檔表格/框架和一個主表格創建MDI應用程序?

我特別感興趣,因為表單上沒有MDI控件了。是否用其他東西代替了它?

編輯:添加到問題,當我創建子窗體時,它們都分別顯示在任務欄中,甚至是OpenDialogs。

您可以使用以下一種方法:

1)正常創建您的單個表單,除了使用TLayout之外,將其稱為“ LayoutMain”(對齊的alClient)作為該表單上所有控件的父級。

2)在“主表單”上,當您想要引入一個表單實例作為MDI接口時,請創建一個TLayout(稱為“ FormContainer”或類似內容),並作為其子對象放置(對齊頂部)是另一個TLayout(稱為“ FormHeader”),其中包含“表單標題”的各個控件,“最小化/最大化/關閉”按鈕以及“框架”標題上您想要的其他任何內容。 這稱為 Composite

3)創建您的子窗體的實例( 但不顯示 ),然后將該實例的主TLayout“ LayoutMain”作為父窗體的TLayout“ FormContainer”的父對象。

4)在前面提到的TLayout(名稱為“ FormHeader”)上,為其指定OnMouseDownOnMouseMove事件,以使其能夠在主窗體上拖動。

當您想最大化主表單中的子表單時,只需將外部TLayout“ FormContainer” align屬性設置為alClient,記住要在表單實例中存儲其原始的Top,Left,Width和Height值,這樣您就可以按下“恢復”按鈕時,請重新調用它們。

沒錯,這是一個相當復雜的解決方案,但據我所知,這是您要實現的FireMonkey的唯一途徑( 大約在Update 2左右 )。

我不希望Embarcadero作為FireMonkey的一部分提供任何形式的MDI仿真,因為MDI被認為是一種老式的方法。

像RAD Studio IDE本身一樣,更現代的解決方案是使用Docking。 這提供了兩全其美的選擇,使用戶可以自由選擇要鏈接到主表單的子表單,也可以自行顯示(或對接布置的任何組合)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM