如何使我的表格始终在我的主要表格之上?

时间:2013-12-13 18:44:34

标签: delphi delphi-7

如何让我的非模态表单始终位于我的主表单之上?

我试过了:

procedure TForm3.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := Application.MainForm.Handle;
end;

这似乎工作得很好。这是正确的方法吗?

1 个答案:

答案 0 :(得分:5)

这是window ownership的Win32概念。拥有的窗口始终显示在其所有者的顶部。所有者在CreateWindow调用中指定,然后不能修改。

在VCL中,您可以通过在CreateParams中设置WndParent来指定所有者,然后框架将其传递给CreateWindow。 VCL为您做到这一点,但在旧版本中,所有者处理有点不稳定。现代版本更好,并允许通过PopupMode和PopupParent属性进行更多控制。

因此,您的代码将具有您想要的效果。