Cela a été discuté ici, mais pas dans ce détail.Comment fermer le formulaire non-modal dans Delphi
Je rencontre des problèmes lorsque j'essaie de fermer un sous-formulaire non modal. Je l'ai aviser le parent, mais je reçois des erreurs abstraites et d'autres exceptions. Qu'est-ce que je fais mal? Est-ce que le parent doit libérer le formulaire non-modal, ou simplement ne jamais essayer d'y accéder à travers cette variable?
forme principale:
NonModal := NonModalTForm.Create(Self);
NonModal.Callback := Callback;
NonModal.Show;
Procedure TForm.Callback; // called by non-modal form when closing
begin
FreeAndNil(NonModal); // or should this just be NonModal := nil so I don't try to access a dangling pointer?
end;
Dans NonModal.pas
procedure NonModalTForm.FormClose;
begin
Callback; // calls parent
end;
Votre code est l'équivalent de la programmation de couper la branche sur laquelle vous êtes assis. –