Delphi(2009 Pro)の場合-非モーダルの子ウィンドウを作成できるメインフォームがあります。フォーカスのあるメインウィンドウであっても、フォーカスのあるフォームを上に描画したい。
Lee Hill
質問する
1803 次
2 に答える
7
Delphi 2007/2009 では、フォームの親に関する VCL の動作が変更されました。Delphi 1-2006 では、フォームの親は非表示のアプリケーション ウィンドウ(Application.Handle)でした。Delphi 2007/2009 では、フォームの親はメイン フォームであり、メイン フォームの親はデスクトップです。
これを変更したい場合は、 *.dpr 行Application.MainFormOnTaskbar
を変更しFalse
て、古い動作を元に戻すだけでなく、Vista と Windows 7 でアプリケーションの外観が奇妙になるようにすることもできます。モーダル子フォームを作成し、Params.WndParent
フィールドをデスクトップ ( 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;
于 2009-06-04T05:52:42.710 に答える
0
複数のウィンドウが同時にフォーカスを持つことはできません。MainForm のみにフォーカスがあるときに、非モーダルの子 Form を一番上にしたいということを意味していたと思います。子フォームの FormStyle プロパティを fsStayOnTop に設定してみましたか?
于 2009-06-03T23:21:27.160 に答える