Показать сообщение отдельно
  #1  
Старый 11.05.2018, 22:32
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию Сплеш-скрин и время появление формы

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