【发布时间】:2015-04-01 09:47:07
【问题描述】:
我们正在将 Delphi 5 应用程序升级到 Delphi XE7。该应用程序有许多 MDIChild (FormStyle fsMDIChild) 表单,它们使用 WindowState wsNormal 打开。当我打开其中一个窗体并再次关闭它时,主窗体 (FormStyle fsMDIForm) 上的主菜单 (TMainMenu) 会向右对齐并且永远不会再返回。如果我在关闭之前调整 MDIChild 表单的大小(例如单击“正常”或“最小化”图标),则不会发生这种情况。
这在 Delphi 5 版本中不会发生,因此我假设 XE 7 的处理方式有所不同。
其他人以前经历过这种情况吗?如果是这样,您是如何解决的?
更新:
我已经成功复制了这个问题:
- 创建一个新的 VCL 应用
- 制作主窗体(MainForm)formStyle MDIForm
- 为带有菜单项的 MainForm 创建 MainMenu
- 创建第二个表单 (ChildForm)
- 使 ChildForm formStyle MDIChild
- 使用菜单项为 ChildForm 创建 MainMenu
- 重要提示(这就是问题所在):仅为 ChildForm BorderIcons 选择 biSystemMenu 和 biMaximise
- 在 MainForm 上创建并显示 ChildForm 的按钮
- 运行应用程序
- 点击按钮
- 最大化子表单
- 关闭 ChildForm(必须最大化,否则不会发生故障)
- 观察 MainForm 的菜单现在与左侧不可点击的“Minimise”图标右对齐如果将 biMinimise 添加到 ChildForm 的 BorderIcons,问题就会消失。
我很确定这是一个错误。如果我错了,请纠正我。
谢谢 J
【问题讨论】:
标签: delphi menu delphi-xe7 mdichild windowstate