3

Delphi(2009 Pro)の場合-非モーダルの子ウィンドウを作成できるメインフォームがあります。フォーカスのあるメインウィンドウであっても、フォーカスのあるフォームを上に描画したい。

4

2 に答える 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 に答える