Leb*_*ers 6 forms delphi runtime
在关于TCustomForm.FormStyle的Delphi文档中,添加了一条注释,指出:"不建议在运行时更改FormStyle."
我想知道为什么不建议在运行时更改formstyle.从用户界面的角度来看是不可取的,还是会出现一些技术问题?在运行时更改formstyle后会出现什么样的问题?
用例
我们希望改进MDI应用程序的多监视器支持.目前,所有子窗口都在主窗口(MDI父窗口)中打开.用户希望能够在主窗口外打开/移动子窗口,以便子窗口将作为单独的浮动窗口打开,该窗口可以位于Windows桌面的任何位置.
我在Adobe Photoshop,Google Chrome和Microsoft Internet Explorer中看到了此功能的示例.(标签可以从标签栏移动,并在单独的浮动窗口中打开)
将FormStyle运行时更改fsNormal为fsMDIform或fsMDIChild需要重新创建窗口句柄,而这又需要为表单上的所有控件重新创建所有窗口句柄.当发生这种情况时,Delphi无法控制的东西很多:也许你正在使用一些依赖于某些Windows控件的第三方控件,而第三方控件却不知道如何保存它的状态.重新创建Window句柄时,用户将失去所有工作.
幸运的是,你可以解决这个问题:
最有可能的原因是表单样式更改将导致窗口句柄重新创建.这将强制重新创建所有子窗口的句柄.
窗口重新创建基本上可以在没有您注意的情况下发生.但是有些控件在重新创建方面存在问题.例如,我过去曾使用工具栏控件来解决这个问题.更新版本的Delphi对重新创建更具弹性.
| 归档时间: |
|
| 查看次数: |
1336 次 |
| 最近记录: |