可能重复:
Can you make a Borderless Application Main Window in Windows, without WS_POPUP style?
我有一个带有BorderStyle的表单:= bsNone;
如何通过在任务栏中单击它来激活最小化的表单?
答案 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一样。