0

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

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

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

更新:

我已经成功复制了这个问题:

  1. 创建一个新的 VCL 应用程序
  2. 制作主窗体(MainForm)formStyle MDIForm
  3. 使用菜单项为 MainForm 创建 MainMenu
  4. 创建第二个表单 (ChildForm)
  5. 使 ChildForm formStyle MDIChild
  6. 使用菜单项为 ChildForm 创建 MainMenu
  7. 重要(这就是它的问题):仅选择 ChildForm BorderIcons biSystemMenu 和 biMaximise
  8. 在 MainForm 上创建按钮,该按钮创建并显示 ChildForm
  9. 运行应用程序
  10. 点击按钮
  11. 最大化子窗体
  12. 关闭 ChildForm (必须最大化,否则不会发生故障)
  13. 观察 MainForm 的菜单现在与左侧不可点击的“Minimise”图标右对齐 如果将 biMinimise 添加到 ChildForm 的 BorderIcons,问题就消失了。

我很确定这是一个错误。如我错了请纠正我。

谢谢J

4

1 回答 1

1

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

很明显,您的项目中有一些代码导致了这个问题。您需要进行一些调试以识别此问题代码。首先剥离代码,直到问题消失。您剥离的最后一个代码应该包含引导您找到问题原因的线索。以这种方式继续,直到您隔离了问题。

于 2015-04-01T15:18:36.057 回答