Есть стандартная конструкция сплешки: Пока запускается приложение, смотрим на сплешку
	Код:
	 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?