Pour créer des formulaires MDI enfant invisible vous mettre leur propriété Visible
-False
, et en plus vous devez désactiver le comportement VCL d'entre eux-montrant la force lors de la création. Cela se produit par le FormStyle
Setter de propriété de TCustomForm
, qui définit Visible
à True
pour les formulaires enfants MDI.
Si vous définissez FormStyle
dans l'inspecteur d'objets, le setter de propriétés sera déjà appelé lors de la création du formulaire et le formulaire ne sera pas affiché immédiatement, mais seulement une fois la construction terminée. Cela vous permet de réinitialiser la demande de montrer la forme, en redéfinissant la méthode AfterConstruction()
comme ceci:
procedure TMDIChild.AfterConstruction;
begin
Exclude(FFormState, fsVisible);
inherited;
end;
Cela va créer une forme d'enfant invisible MDI.
Pour tester cela, vous pouvez créer une nouvelle application MDI dans l'EDI, remplacer la méthode dans la classe sous forme d'enfant comme indiqué ci-dessus, et simulent une longue initialisation:
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;
Sans la méthode AfterConstruction()
substituée il sera créer et montrer un enfant MDI chaque demi-seconde. Avec la méthode surchargée, il les montrera tous après une période occupée de 5 secondes, ce qui vous donnera la chance d'afficher votre écran de démarrage à la place.
Important:
En utilisant LockWindowUpdate()
pour réduire le scintillement ou supprimer toute sortie d'écran est faux, faux, faux. Don't do it, lisez la série de Raymond Chen articles sur le sujet pour comprendre pourquoi.
Ne pas les créer au démarrage. Créez-les quand vous en avez besoin. –