salut
j'ai un form1 MDIForm
et form2 et form3 son MDIChild
et j'ai :
bouton2 pour afficher la form form2
bouton3 pour afficher la form form3
bouton1 pour fermer et libérer l'espace mémoire de tous les MDIChild
Je veux libérer et fermer complètement l'espace mémoire de tous les MDIChild
Quand j'appuie sur le bouton1 les MDIChild sont fermer
Mais quand j'appuie à nouveau sur le bouton2 ou bouton3 le message(la form2 est active) est afficher donc les MDIChild sont restés "Assigned"
Quelle est la solution pour les MDIChild ne restez pas "Assigned" Quand ils sont fermés ???
voila le code du bouton2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
procedure Tform1.Button2Click(Sender: TObject);
begin
if Not Assigned(form2) then
begin
   Application.CreateForm(Tform2, form2);
   form2.Show;
end
else
   showmessage('la form2 est active');
end;
voila le code du bouton3:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
procedure Tform1.Button3Click(Sender: TObject);
begin
if Not Assigned(form3) then
begin
   Application.CreateForm(Tform3, form3);
   form3.Show;
end
else
   showmessage('la form3 est active');
end;
le code de l'evenement onClose de la form2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure Tform2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
le code de l'evenement onClose de la form3:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure Tform3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
voila le code du bouton1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
procedure Tform1.Button1Click(Sender: TObject);
var i:integer;
begin
for i := MDIChildCount - 1 downto 0 do
begin
MDIChildren[i].Close;
MDIChildren[i].Free;
MDIChildren[i].Release;
end;
end;