Delphi MDI Child表单和MainMenu

时间:2015-04-01 09:47:07

标签: delphi menu delphi-xe7 mdichild windowstate

我们正在将Delphi 5应用程序升级到Delphi XE7。该应用程序有许多MDIChild(FormStyle fsMDIChild)表单,使用WindowState wsNormal打开。当我打开其中一个表单并再次关闭时,主表单上的主菜单(TMainMenu)(FormStyle fsMDIForm)将自己对齐,并且永远不会再返回。如果我在关闭之前调整MDIChild表单的大小(例如,点击"正常"或者"最小化"图标),这不会发生。

Delphi 5版本不会发生这种情况,所以我假设XE 7会以不同的方式处理。

之前有其他人经历过这个吗?如果是这样,你是如何解决它的?

更新:

我已成功复制此问题:

  1. 创建新的VCL应用
  2. 制作主窗体(MainForm)formStyle MDIForm
  3. 使用菜单项
  4. 为MainForm创建MainMenu
  5. 创建第二个表单(ChildForm)
  6. 制作ChildForm formStyle MDIChild
  7. 使用菜单项
  8. 为ChildForm创建MainMenu
  9. 重要(这就是它的突破):选择ChildForm BorderIcons只有biSystemMenu和biMaximise
  10. 在MainForm上创建按钮,创建并显示ChildForm
  11. 运行应用程序
  12. 点击按钮
  13. 最大化ChildForm
  14. 关闭ChildForm(必须最大化否则不会发生故障)
  15. 观察MainForm的菜单现在与无法点击的'最小化'左边的图标如果将biMinimise添加到ChildForm的BorderIcons,问题就会消失。
  16. 我很确定这是一个错误。如果我错了,请纠正我。

    由于 Ĵ

1 个答案:

答案 0 :(得分:1)

创建全新项目并以您描述的方式创建表单时,不会观察到您报告的行为。

显然,您的项目中存在导致此问题的一些代码。您需要进行一些调试以识别此问题代码。首先剥离代码,直到问题消失。你剥离的最后一个代码应该包含引导你解决问题的原因的线索。以这种方式继续,直到您将问题隔离开来。