Delphi 第二种形式始终位于主形式的顶部

Delphi 第二种形式始终位于主形式的顶部,delphi,delphi-10.4.2,Delphi,Delphi 10.4.2,我刚刚安装了新的Delphi Sydney 2(10.4.2),我发现了一些奇怪的东西: 创建一个新的vcl应用程序 添加一个新表单 将第二个表单Visible设置为True(以便我们可以看到它)。不要更改任何其他项目设置/表单属性 运行应用程序 第二个表单将始终位于主表单的顶部。 在运行时将FormStyle设置为fsNormal不会修复该行为 有人能证实这一行为吗?已解决。 我回顾了我现有的项目。 它们都将Application.MainFormOnTaskbar设置为false(完全忘

我刚刚安装了新的Delphi Sydney 2(10.4.2),我发现了一些奇怪的东西:

  • 创建一个新的vcl应用程序
  • 添加一个新表单
  • 将第二个表单Visible设置为True(以便我们可以看到它)。不要更改任何其他项目设置/表单属性
  • 运行应用程序
第二个表单将始终位于主表单的顶部。
在运行时将FormStyle设置为fsNormal不会修复该行为

有人能证实这一行为吗?

已解决。 我回顾了我现有的项目。 它们都将Application.MainFormOnTaskbar设置为false(完全忘记了)

这是因为我总是从模板开始。看起来该模板早于Vista时代:)

今天我第一次启动了一个不是该模板副本的应用程序。这就解释了为什么这种默认行为对我来说是新的:)

无论如何,我不想在我的应用程序中到处都是“模态”表单。因此,我将坚持使用MainFormOnTaskbar=false。当我确实希望子窗体保持在顶部时,我将其设置为模态或使用fsStayOnTop



起初我认为应该删除这个问题,但后来我决定将其作为Embarcadero文档的扩展留在这里。

是的,这是默认行为。我认为这是众所周知的。另外:如果这确实是一个bug,那么它就不会是一个编译器bug。这将是RTL中的一个bug。相关:@AndreasRejbrand-看起来我已经好几年没有从IDE开始新项目了。感谢信息:此行为是在Delphi 2007中添加的。使用
ShowMainFormOnTaskbar=False
通常是个坏主意,现代Windows集成所需的许多VCL功能都依赖于它的
true
。我一直认为这是VCL中一个非常糟糕的设计选择,但事实就是如此。要获得所需的行为,请查看调整每个表单的
popuparent
/
PopupMode
属性,或覆盖
CreateParams()
以便根据需要设置/清除表单的所有者窗口。谢谢。我将研究“popuparent/PopupMode”。CreateParams应称为CreateProblems….:)