[英]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”)上,為其指定OnMouseDown
和OnMouseMove
事件,以使其能夠在主窗體上拖動。
當您想最大化主表單中的子表單時,只需將外部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.