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)
J'appelle cette forme via un bouton sur une form principale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Je souhaite l'intancier via un Lettre.PopupMenu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TPrincipale.BitBtn6Click(Sender: TObject); begin Lettre.Show; end;
J'ai donc le code suivant :
Et j'ai lu dans les tutos qu'il fallait mettre Action:=caFree dans le onClose
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TLettre.NewInstance1Click(Sender: TObject); begin TLettre.Create(Application).Show; 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TLettre.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end;
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 ?
Partager