gpt4 book ai didi

delphi - 与 FireMonkey 的 MDI 接口(interface)

转载 作者:行者123 更新时间:2023-12-03 15:10:35 24 4
gpt4 key购买 nike

是否可以使用 FireMonkey 创建传统意义上的包含多个文档表单/框架和一个主表单的 MDI 应用程序?

我特别感兴趣,因为表单上不再有 MDI 控件。它是否已被替换为不同的东西?

编辑:添加到问题中,当我创建子表单时,它们都单独显示在任务栏中,甚至是 OpenDialogs..

最佳答案

这是您可以使用的一种方法:

1) 像平常一样创建您的个人表单,除了使用 TLayout,将其称为“LayoutMain”(对齐的 alClient)作为该表单上所有控件的父级。

2) 在你的“主窗体”上,当你想要引入一个窗体实例以使其像 MDI 界面一样运行时,创建一个 TLayout(将其称为“FormContainer”或其他名称),并将其放置为该窗体的子级(与顶部对齐)另一个 TLayout(称之为“FormHeader”),包含表单标题的各个控件、最小化/最大化/关闭按钮以及“框架”标题上您想要的任何其他内容。 这称为 复合

3) 创建子窗体的一个实例(但不显示它),然后将该实例的主 TLayout“LayoutMain”作为主窗体的 TLayout“FormContainer”的父级。

4) 在前面提到的 TLayout(名称为“FormHeader”)上,为其提供 OnMouseDownOnMouseMove 事件,以提供在主窗体周围拖动它的能力.

当您想要最大化主窗体内的子窗体时,只需将外部 TLayout“FormContainer”align 属性设置为 alClient,记住将其原始顶部、左侧、宽度和高度值存储在窗体实例中这样您就可以在按“恢复”按钮时调用它们。

确实,这是一个相当复杂的解决方案,但据我所知,这是您使用 FireMonkey 实现目标的唯一方法,因为它现在存在(大约更新2)。

我不希望 Embarcadero 提供任何形式的 MDI 模拟作为“开箱即用”的 FireMonkey 的一部分,因为 MDI 被认为是一种老式方法。

更现代的解决方案是使用 Docking,就像 RAD Studio IDE 本身所做的那样。这提供了两全其美的优点,使用户可以自由选择他们想要链接到主表单的子表单,或自行显示在主表单之外(或停靠排列的任意组合)。

关于delphi - 与 FireMonkey 的 MDI 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8172021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com