我已经阅读了很多关于此事但我似乎越来越困惑,我读的越多。我使用的是Delphi 2007,我想在启动时最小化我的应用程序,我对系统托盘图标不感兴趣,只需要一个任务栏图标就可以恢复应用程序。
如果您只使用主窗体和.dpr文件集中的最简单的所有项目:
Application.MainFormOnTaskBar := true;
Application.ShowMainForm := false;
并运行应用程序,没有TASKBAR ICON可见,因此无法恢复和激活应用程序。
在没有显示主要表单然后使其最小化的情况下最小化启动的正确方法是什么?这看起来很简单,但对我来说却不是。
答案 0 :(得分:2)
事实上,这很简单并在文档中进行了解释,但有点难以找到,因为它没有与您期望/搜索它的位置相关联。
指定显示应用程序主窗口的标志。
procedure TForm1.FormCreate(Sender: TObject);
begin
CmdShow := SW_SHOWMINNOACTIVE;
...
没有记录,但唯一支持的标记为SW_SHOWMINNOACTIVE
和SW_SHOWMAXIMIZED
,因此您无法使用SW_SHOWMINIZED
。
另外,不要忘记删除ShowMainForm := false;
语句,否则表单将不可见,因此不会有任何任务栏图标。
<强>更新强>
D2007的TApplication.Run
中存在一个错误(至少在XE2中已得到纠正)导致上述解决方案阻止主窗体显示。这是FInitialMainFormState := wsMinimized;
案例分支中缺少的SW_SHOWMINNOACTIVE
语句。
在D2007中使用WindowState
,但表单的OnCreate
设置太早,VCL在OnCreate
运行后分配主窗体并修改某些窗口样式。将OnShow
与标志一起使用,这样就不会在应用程序的生命周期中设置窗口状态而不是在启动时。
type
TForm1 = class(TForm)
..
private
FRunOneTime: Boolean;
..
procedure TForm1.FormShow(Sender: TObject);
begin
if not FRunOneTime then begin
WindowState := wsMinimized;
FRunOneTime := True;
end;
end;
答案 1 :(得分:0)
如果Windows是目标操作系统:
只需在设计时将您的主要表单WindowState
属性设置为wsMinimized
。
您也可以在运行时以OnCreate
事件的形式执行此操作:
procedure TForm1.FormCreate(Sender: TObject);
begin
Perform(WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;