在Delphi(2009 Pro)中 - 我有一个可以创建非模态子窗口的主窗体.我希望无论哪种形式都有焦点在顶部绘制 - 即使它是具有焦点的主窗口.
使用Delphi 2007/2009,VCL改变了有关表单父级的行为.在Delphi 1-2006中,表单的父级是隐藏的应用程序窗口(Application.Handle).在Delphi 2007/2009中,表单的父级是主窗体,主窗体的父级是桌面.
如果你想改变它,你可以将*.dpr行更改为返回旧行为的行Application.MainFormOnTaskbar,False但也会使你的应用程序在Vista和Windows 7中看起来很奇怪.或者你可以覆盖所有非虚拟的CreateParams方法模态子窗体并将Params.WndParent字段设置为desktop(HWND_DESKTOP)或仍然存在Application.Handle.
type
TMyChildForm = class(TForm)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := Application.Handle;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1687 次 |
| 最近记录: |