Есть стандартная конструкция сплешки: Пока запускается приложение, смотрим на сплешку
Код:
with TSplash.Create(nil) do
begin
try
Show;
Application.Initialize;
Update;
Application.CreateForm(TMForm, MForm);
Application.ShowMainForm := False;
Hide;
Application.ProcessMessages;
finally
Release;
end;
Free;
end;
Application.Run;
Код:
procedure TMForm.FormCreate(Sender: TObject);
begin
SomeForm:= TSomeForm.Create(Self);
Application.OnRestore := AppRestore;
Application.OnMinimize := AppHide;
...
SomeLongProc;
PostMessage(Self.Handle, WM_AFTER_CREATE, 0, 0); // некий не тяжелый код, который нельзя сделать в Oncreate
end;
В итоге мы видим Splash, отрабатывает Create, исчезает Splash, но форма отображается только спустя 2-3 секунды. почему так? больше никакие события типа OnShow, OnPaint не обрабатываются. Откуда эта задержка? Хотелось бы чтобы держался SpLash до появления формы. Не уничтожать же его в ONPaint?