Delphi2009でのFormの重なりについて教えてください。
MainForm(こちらをメインフォームにする)
SubForm
という2つのフォームを作成し、アプリケーション起動と同時にSubForm.Show()を実行して常に2つのフォームを表示した状態にしたいのですが、常にSubFormのMainForm前面に出てきてしまいます。MainFormが後ろに隠れてしまって非常に困っています。
C++Builder2009ではProject1.cppの次の行をコメントアウトすれば、期待する動作になるとの解決方法があるようですが、
Application->MainFormOnTaskBar = true;
Delphiの場合は、どのようにすれば解決するでしょうか?
よろしくお願いいたします。
サトウ
Form2の定義に以下を追加したら良いかと
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := Application.Handle;
end;
標準だと、Params.WndParentにメインフォームのハンドルが入ってる状態になります。
WndParentに0を入れた場合は、Form2もタスクバーに表示された状態になりメインフォームを最小化してもForm2は最小化されない状態になります。
Application.Handleを入れた場合は、Form2はタスクバーに表示されずメインフォームと一緒に最小化されます。
AUさん ありがとうございます。
早速、試してみました。望んでいた動作(といううより、本来そうなって当然であると思っていますが)になりました。
AppをDelphi7からDelphi2009に変換していますが、Delphi2009の動作の違いに苦労しています。今後ともよそしくお願いいたします。
サトウ
ツイート | ![]() |