我们正在将 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