Мое приложение имеет много много форм mdi, и они создаются после успешного пользовательского входа в систему. Как я могу лучше всего скрыть этот процесс создания? Это выглядит глупым, и это занимает время, в то время как формы mdi красятся после того, как новая форма создается и так далее.
До сих пор я использовал LockWindowUpdate, который не скрывает все, но я хотел бы использовать экран-заставку, показывающий прогресс создания, но я не могу с LockWindowUpdate.
Наилучшие пожелания Janne
Чтобы создать невидимые дочерние формы 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 ()
для уменьшения мерцания или подавления любого вывода на экран является неправильным, неправильным, неправильным. Не делайте этого , прочтите серию статей Раймонда Чена по этой теме, чтобы понять, почему это так.