Как я могу получить кнопки панели задач для форм, которые не являются основной формой? - PullRequest
14 голосов
/ 31 марта 2011

Как сделать так, чтобы форма отображалась на панели задач в Delphi? Например, в Firefox, когда вы открываете страницу в новом окне, он создает другое окно на панели задач, не создавая новый процесс. В настоящий момент мое приложение Delphi открывает новую форму при нажатии кнопки, но на панели задач остается только одна вещь, поэтому вы не можете alt-tab между главной формой и формой, которая создается, когда кнопка щелкнул. Как я могу изменить это так, чтобы новая форма появилась с новой кнопкой панели задач? Мой текущий код выглядит так:

procedure Form1ButtonClick(Sender: TObject);
begin
    Form2.Show;
end;

Я возился с CreateWindowEx, но в идеале я хотел бы найти более простое решение, чем прямое использование Windows API.

Ответы [ 2 ]

26 голосов
/ 31 марта 2011

Если я правильно понимаю, что вы хотите, вы можете отобразить ваши вторичные формы на панели задач, переопределив процедуру CreateParams, как описано в Минимизация дочерних форм независимо от основной формы delphi.about.com статья, вот так:

interface

type
  TMyForm = class(TForm)
  ...
  protected
    procedure CreateParams(var Params: TCreateParams) ; override;
  ...

implementation

procedure TMyForm.CreateParams(var Params: TCreateParams) ;
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := 0;
end;
1 голос
/ 27 декабря 2012

, если не использовать эту строку, лучше в порядке формы:

Params.WndParent := 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...