喫茶XRAYトップページ

[スレッド全体
]

[12540] 実行時にメインフォームを非表示返信 削除
2019/1/20 (日) 17:49:06 Mr.XRAY
ググっていたらこんな質問を見かけました.
子フォーム 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;




[12541] Re:実行時にメインフォームを非表示返信 削除
2019/1/20 (日) 17:56:36 Mr.XRAY
> Form2 を表示してメインフォームを非表示にします.
> すると,タスクバーにアプリまたはフォームのアイコンが表示されなくなってしまいます.


MainFormOnTaskbar の値が False の時,つまり Delphi 7 以前であれば,
タスクバーにはアプリケーションウィンドウのアイコンが表示されます.
表示はデフォルトで Project1 です.


[12544] Re:実行時にメインフォームを非表示返信 削除
2019/1/21 (月) 17:35:34 Mr.XRAY
サンプルとして掲載しておくことにしました.

[712] [03_メインフォームを非表示にして子フォームを表示  -  ITaskbarList]
http://mrxray.on.coocan.jp/Delphi/plSamples/712_Taskbar_Progress.htm#03

[712] [04_メインフォームを非表示にして子フォームを表示 - WndParent]
http://mrxray.on.coocan.jp/Delphi/plSamples/712_Taskbar_Progress.htm#04


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82