如何设置Delphi表单始终保持在主表单最上层显示?
- 内容介绍
- 文章标签
- 相关推荐
本文共计230个文字,预计阅读时间需要1分钟。
如何使我的非模式表单最终位于我的主表单之上?我试过:procedure TForm3.CreateParams(var Params: TCreateParams);begin inherited CreateParams(Params); Params.WndParent :=Application.MainForm.Handle;end;
这看起来像是工匠级别的技巧。
如何使我的非模态表单始终位于我的主表单之上?我试过了:
procedure TForm3.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.WndParent := Application.MainForm.Handle; end;
这似乎工作正常.这是正确的方法吗?
这是 window ownership的Win32概念.拥有的窗口始终显示在其所有者的顶部.所有者在CreateWindow调用中指定,然后不能修改.在VCL中,您可以通过在CreateParams中设置WndParent来指定所有者,然后框架将其传递给CreateWindow. VCL为您做到这一点,但在旧版本中,所有者处理有点不稳定.现代版本更好,并允许通过PopupMode和PopupParent属性进行更多控制.
因此,您的代码将具有您想要的效果.
本文共计230个文字,预计阅读时间需要1分钟。
如何使我的非模式表单最终位于我的主表单之上?我试过:procedure TForm3.CreateParams(var Params: TCreateParams);begin inherited CreateParams(Params); Params.WndParent :=Application.MainForm.Handle;end;
这看起来像是工匠级别的技巧。
如何使我的非模态表单始终位于我的主表单之上?我试过了:
procedure TForm3.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.WndParent := Application.MainForm.Handle; end;
这似乎工作正常.这是正确的方法吗?
这是 window ownership的Win32概念.拥有的窗口始终显示在其所有者的顶部.所有者在CreateWindow调用中指定,然后不能修改.在VCL中,您可以通过在CreateParams中设置WndParent来指定所有者,然后框架将其传递给CreateWindow. VCL为您做到这一点,但在旧版本中,所有者处理有点不稳定.现代版本更好,并允许通过PopupMode和PopupParent属性进行更多控制.
因此,您的代码将具有您想要的效果.

