Kro*_*ica 5 delphi mdi delphi-xe2 firemonkey
是否可以使用传统意义上的许多文档表单/框架和一个主表单使用FireMonkey创建MDI应用程序?
我特别感兴趣,因为表格上没有MDI控件了.它是否被不同的东西取代了?
编辑:添加问题,当我创建子表单时,它们都在任务栏中单独显示,甚至是OpenDialogs ..
这是您可以使用的一种方法:
1)正常创建单个表单,除了使用TLayout,将其称为"LayoutMain",(对齐的alClient)作为该表单上所有控件的父级.
2)在你的"主表单"上,当你想要一个表单实例的行为就像它作为MDI接口一样时,创建一个TLayout(称之为"FormContainer"或其他东西),放置它作为它的孩子(对齐到top)另一个TLayout(称之为"FormHeader"),包含Form Caption的单独控件,最小化/最大化/关闭按钮以及"frame"标题上你想要的任何其他内容.这称为 复合材料.
3)创建子表单的实例(但不显示它),然后将该实例的主要TLayout"LayoutMain"作为主表单的TLayout"FormContainer".
4)在前面提到的TLayout(名称为"FormHeader")上,给它OnMouseDown和OnMouseMove事件提供将其拖动到主表单周围的能力.
当你想在主表单中最大化子表单时,你只需要将外部TLayout"FormContainer"对齐属性设置为alClient,记住在表单的实例中存储其原始的Top,Left,Width和Height值,这样你就可以按"还原"按钮时调用它们.
确实,这是一个相当复杂的解决方案,但据我所知,这是您实现FireMonkey的唯一方式,因为它存在于今天(大约更新2).
我不希望Embarcadero提供任何形式的MDI仿真作为FireMonkey"开箱即用"的一部分,因为MDI被认为是一种老式的方法.
更现代的解决方案是使用Docking,就像RAD Studio IDE本身一样.这提供了两个世界中最好的,使用户可以自由选择他们想要链接到主表单的子表单,或者在他们自己(或任何对接安排的组合)之外显示.
| 归档时间: |
|
| 查看次数: |
5396 次 |
| 最近记录: |