从任务栏激活窗口

时间:2011-02-20 05:53:19

标签: delphi taskbar

  

可能重复:
  Can you make a Borderless Application Main Window in Windows, without WS_POPUP style?

我有一个带有BorderStyle的表单:= bsNone;

如何通过在任务栏中单击它来激活最小化的表单?

2 个答案:

答案 0 :(得分:4)

我猜你正在使用旧版本的Delphi(我刚刚在Delphi 2010上进行了测试,我猜你正在使用旧的东西,因为在我的版本中我不需要做什么,恢复窗口就行了。)

问题1 :如何最小化无边框形式?无边框表单没有“最小化”按钮!你确定它被最小化了并且它实际上并没有被隐藏吗?我刚尝试了这个,我只能通过在其上放置一个按钮并从按钮运行此代码来最小化表单:

ShowWindow(Handle, SW_MINIMIZE);

如果我点击Windows 7任务栏中的应用程序按钮,它就会出现问题。这给我们带来了第二个问题。

问题2 :您使用的是哪个版本的Delphi?什么版本的Windows?不幸的是重要。 Windows对任务栏按钮的处理方式发生了变化,这些更改促使Delphi为支持任务栏按钮所做的更改。

如果您使用的是旧版本的Delphi和某些新版本的Windows,则可以尝试在表单上删除TApplicationEvents,并从OnRestore事件执行此操作:

ShowWindow(Handle, SW_SHOW or SW_RESTORE);

答案 1 :(得分:1)

解决方案是

type
  TForm1 = class(TForm)
  private
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    { Private declarations }
  public
    { Public declarations }
  end;

,其中

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or WS_MINIMIZEBOX;
end;
完全和大卫in the old question about this topic一样。