Действительно, это просто и объяснено в документации, но найти его немного сложно, так как оно не связано с тем местом, где вы могли бы его ожидать / искать.
System.CmdShow
Указывает флаги для отображения главного окна приложения.
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;