如何获取不是主要表单的表单的任务栏按钮?

Nic*_*ski 14 forms windows delphi

如何让表格出现在Delphi的任务栏上?例如,在Firefox中,当您在新窗口中打开页面时,它会在任务栏上创建另一个窗口,而不会创建新进程.目前我的Delphi应用程序在单击按钮时打开一个新表单,但任务栏上仍然只有一个表单,因此您不能在主表单和按钮所在的表单之间使用alt-tab.点击.如何更改它以便新表单显示新的任务栏按钮?我当前的代码如下所示:

procedure Form1ButtonClick(Sender: TObject);
begin
    Form2.Show;
end;
Run Code Online (Sandbox Code Playgroud)

我一直在搞乱CreateWindowEx,但理想情况下我想找到比直接使用Windows API更简单的解决方案.

jac*_*ate 26

如果我理解你想要什么,你可以通过覆盖它的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;
Run Code Online (Sandbox Code Playgroud)

  • 关于如何设置WndParent的About.com文章是错误的.Old New Thing解释了为什么[使桌面成为应用程序窗口的父级是错误的](http://blogs.msdn.com/b/oldnewthing/archive/2004/02/24/79212.aspx).我在这里修改了代码. (12认同)
  • 您应该在CreateParams中执行一个或另一个,但不需要两者. (2认同)