【问题标题】:Forms are minimized on FormShow: random behaviour in Delphi application. Any idea?FormShow 上的表单最小化:Delphi 应用程序中的随机行为。任何的想法?
【发布时间】:2010-07-29 13:19:49
【问题描述】:

我遇到了一个难以跟踪的问题:当显示新表单时(我在运行时创建并显示它们),有时表单会被最小化。

不明白为什么,我在xp、Vista和7都说这个问题。

我尝试创建示例来隔离问题,但在示例上我无法重现它(=表单始终显示未最小化)。

会发生什么:

在我的应用程序中,我创建并显示了许多表单(用户单击菜单项 - 创建并显示了一个表单)。有时,应用程序栏中的表单也会随机最小化。所以我需要点击它并再次恢复它......

有人知道为什么会发生这种情况吗?如果我有提示,至少我可以尝试找到并解决问题。

我使用 Delphi 2009 和 DevExpress VCL。

【问题讨论】:

  • 您是否使用任何代码/组件来保持表单位置,以便在重新创建时保持在同一位置?
  • 我感觉表单并没有像进入后台那样被最小化。那可能吗?换句话说,新表单刚推出后,你还看到旧表单,因为新表单就坐在它后面?
  • 是的,我使用代码来恢复表单大小(不是位置)。

标签: delphi forms minimize


【解决方案1】:

在运行时:

Form := TMyForm.Create;
Form.Show;
Form.WindowState := fsNormal;

如果你不使用任何保存状态的组件,那么最好反转最后两个动作:

Form := TMyForm.Create;
Form.WindowState := fsNormal;
Form.Show;

【讨论】:

  • 是 是 是。 6 个月后审查的这个答案(起初我忽略了)给了我线索。我的问题是我正在恢复 WindowsState,所以如果用户在任何窗口最小化的情况下关闭应用程序,它就会恢复为最小化。所以我还是使用了答案,因为我在 formshow 中存储(没有理由在 FormShow 中做,所以我搬到了 FormCreate 中),无论如何,WindowState 上的“焦点”很有用。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 2013-07-14
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多