intanciation de form et erreur à la réouverture (Action:=caFree)
Bonjour à tous,
(Difficile de mettre un titre de discussion.)
J'ai une form créée dans le source (petit clin d’œil à SergioMaster qui m'a guidé dans le SplashScreen ce we)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
uses
Forms,
Lettrage in 'Lettrage.pas' {Lettre},
...//...
{$R *.RES}
begin
Application.Initialize;
// Acceuil au lancement du logiciel
Acceuil := TAcceuil.Create(nil);
Acceuil.Show;
Acceuil.Update;
Application.Title := 'BLABLABLA';
Application.CreateForm(TLettre, Lettre);
...//...
Acceuil.free;
Application.Run;
end. |
J'appelle cette forme via un bouton sur une form principale
Code:
1 2 3 4
| procedure TPrincipale.BitBtn6Click(Sender: TObject);
begin
Lettre.Show;
end; |
Je souhaite l'intancier via un Lettre.PopupMenu
J'ai donc le code suivant :
Code:
1 2 3 4
| procedure TLettre.NewInstance1Click(Sender: TObject);
begin
TLettre.Create(Application).Show;
end; |
Et j'ai lu dans les tutos qu'il fallait mettre Action:=caFree dans le onClose
Code:
1 2 3 4
| procedure TLettre.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end; |
Ça fonctionne bien, sauf quand je rappelle ma form initiale par le clic sur le menu principal : là j'ai une bonne grosse erreur de violation d'accès.
J'imagine que le caFree a libéré la mémoire de la fiche "mère", donc il me faudrait Action:=caFree dans la TLettre "fille" mais pas le mettre chez la "mère"
Mais comment faire ?