ググっていたらこんな質問を見かけました.
子フォーム Form2 をメインフォーム Form1 から表示するとします.
Form2 を表示してメインフォームを非表示にします.
すると,タスクバーにアプリまたはフォームのアイコンが表示されなくなってしまいます.
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.Show;
Hide;
end;
サンプルプログラム主にアクティブなフォームのアイコンだけをタスクバーに表示する
サンプルがありますが,以下のような方法もあります.
動作確認は Windows 7 U64(SP1) + Delphi XE5(UP2) Pro VCL-32 です.
procedure TForm1.Button1Click(Sender: TObject);
begin
// まずメインフォームを非表示にする
Hide;
Form2 := TForm2.Create(Self);
Form2.Left := Self.Left + 100;
Form2.Top := Self.Top + 100;
Form2.Show;
end;
表示する子フォームのコードを以下のようにします.
uses Unit1;
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
//このフォームの親をDesktopとする
//タスクバーにForm1とは別にアイコン表示される
if not Form1.Visible then begin
Params.WndParent := GetDesktopWindow;
end;
end;
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Form1.Show;
end;
|