Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как отобразить не главные окна своей программы в панели задач?

01.01.2007
procedure TMyForm.CreateParams(var Params :TCreateParams); {override;}
begin
  inherited CreateParams(Params); {CreateWindowEx}
  Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow;
end;
 

https://delphiworld.narod.ru/

DelphiWorld 6.0


type
   TForm = class(TForm)
     {...}
   protected
     procedure CreateParams(var Params: TCreateParams); override;
   end;
 
 implementation
 
 {...}
 
 procedure TForm2.CreateParams(var Params: TCreateParams);
 begin
   inherited CreateParams(Params);
   Params.ExStyle   := Params.ExStyle or WS_EX_APPWINDOW;
   Params.WndParent := GetDesktopWindow;
 end;

Взято с сайта: https://www.swissdelphicenter.ch


У многооконного приложения, как Delphi, обычно только одна кнопка на TaskBar. Если же вам понадобилось, чтобы у каждого окна была своя кнопка, воспользуйтесь функцией SetWindowLong, добавив флаг WS_EX_APPWINDOW.

В модуле первого окна:

uses Unit2, Unit3;
 
{$R *.DFM}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
  Form1.Hide;
  Form2.Show;
  Form3.Show;
end;

В модуле второго окна:

uses Unit3;
 
{$R *.DFM}
 
procedure TForm2.FormCreate(Sender: TObject);
begin
  SetWindowLong(Handle, GWL_EXSTYLE,
  GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
end;
 
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Form3.Visible = false then
    Application.Terminate;
end;

В модуле третьего окна:

uses Unit2;
 
{$R *.DFM}
 
procedure TForm3.FormCreate(Sender: TObject);
begin
  SetWindowLong(Handle, GWL_EXSTYLE,
  GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
end;
 
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Form2.Visible = false then
    Application.Terminate;
end;

https://delphiworld.narod.ru/

DelphiWorld 6.0


type
  TForm2 = class(TForm)
  private
    { Private declarations }
    procedure CreateParams(var Params: TCreateParams); override;
  end;
...
 
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
    ExStyle := ExStyle or WS_EX_APPWINDOW;
end; 

https://delphiworld.narod.ru/

DelphiWorld 6.0