gpt4 book ai didi

forms - 为什么不建议在运行时更改表单样式?

转载 作者:行者123 更新时间:2023-12-03 14:56:29 25 4
gpt4 key购买 nike

在 Delphi 文档中关于 TCustomForm.FormStyle添加了一条注释,指出:“不建议在运行时更改 FormStyle。”

我想知道为什么不建议在运行时更改表单样式。从用户界面的角度来看,这是不可取的还是可能会出现一些技术问题?在运行时更改表单样式后会出现什么样的问题?

用例

我们希望改进 MDI 应用程序的多显示器支持。目前,所有子窗口都在主窗口(MDI 父窗口)内打开。用户希望能够在主窗口之外打开/移动子窗口,以便子窗口将作为单独的 float 窗口打开,可以位于 Windows 桌面的任何位置。

我在 Adob​​e Photoshop、Google Chrome 和 Microsoft Internet Explorer 中看到过此功能的示例。 (选项卡可以从选项卡栏移动,并将在单独的 float 窗口中打开)

最佳答案

在运行时将 FormStylefsNormal 更改为 fsMDIformfsMDIChild 需要重新创建窗口句柄,这又需要为窗体上的所有控件重新创建所有窗口句柄。当发生这种情况时,有很多事情超出了 Delphi 的控制范围:也许您正在使用一些依赖于某些 Windows 控件的第 3 方控件,但第 3 方控件不知道如何保存其状态。重新创建窗口句柄时,用户将丢失所有工作。

幸运的是,您可以解决该问题:

  • 停止使用 MDI,让所有窗口“ float ”并以其他方式处理它们。 MDI 已经过时一段时间了。
  • 就这么做吧,根据您拥有的控件类型,它可能会正常工作。如果没有,请查看出了什么问题并解决它(例如:您可能需要自己保存某些控件的状态并在交换后恢复它)
  • 尝试将所有内容放在框架上;当用户想要移动时,创建一个新的空非 MDI/MDI 表单,重新设置框架的父级,销毁旧表单。

关于forms - 为什么不建议在运行时更改表单样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872063/

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