Чтобы создать невидимые дочерние формы MDI, вы устанавливаете для их свойства Visible
значение False
, и, кроме того, вам необходимо отключить принудительное отображение VCL при их принудительном отображении. Это происходит с помощью установщика свойства FormStyle
TCustomForm
, который устанавливает Visible
в True
для дочерних форм MDI.
Если вы установите FormStyle
в инспекторе объектов, то средство настройки свойств будет вызываться уже во время создания формы, и форма будет отображаться не сразу, а только после завершения построения. Это позволяет сбросить запрос на отображение формы, переопределив метод AfterConstruction()
следующим образом:
procedure TMDIChild.AfterConstruction;
begin
Exclude(FFormState, fsVisible);
inherited;
end;
Это создаст невидимую дочернюю форму MDI.
Чтобы проверить это, вы можете создать новое приложение MDI в IDE, переопределить метод в классе дочерней формы, как показано выше, и смоделировать долгую инициализацию:
procedure TMainForm.FileNew1Execute(Sender: TObject);
var
i: integer;
begin
for i := 1 to 10 do begin
CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));
Update;
Sleep(500);
end;
for i := 0 to MDIChildCount - 1 do
MDIChildren[i].Visible := True;
end;
Без переопределенного метода AfterConstruction()
он будет создавать и показывать дочерний объект MDI каждые полсекунды. С помощью переопределенного метода он покажет их все после 5-секундного периода занятости, что даст вам возможность вместо этого показать заставку.
Важно:
Использование LockWindowUpdate()
для уменьшения мерцания или подавления любого вывода на экран неверно, неправильно, неправильно. Не делайте этого , прочитайте серию статей Рэймонда Чена на эту тему, чтобы понять, почему это так.