2009-08-16 9 views
1

Pour éviter la solution plus compliquée où le cadre appelle une routine dans le formulaire parent afin que le formulaire puisse tuer le cadre ... Je me demandais si c'est bien de définir le formulaire comme parent du cadre, et laissez Delphi appeler Frame .Free lorsque l'utilisateur ferme l'application?Aucune fuite de mémoire lors de la définition du formulaire en tant que parent de l'image?

procedure TForm1.FormShow(Sender: TObject); 
var 
    Frame2 : TFrame2; 
begin 
    //Frame2 := TFrame2.Create(nil); 
    Frame2 := TFrame2.Create(Self); 
    Frame2.Align := alClient; 
    Frame2.Parent := Self; 
    Frame2.Visible := True; 
end; 

Merci.

Répondre

12

En fait, vous êtes parent confus et propriétaire:

Le propriétaire est passé comme paramètre au constructeur et prendra soin de libérer le composant, le parent est le contrôle qui contient le contrôle visuel.

Exemple:

Vous avez une forme, un panneau sur cette forme et une étiquette sur ce panneau: Le formulaire est généralement le propriétaire du panneau et l'étiquette. Le formulaire est le parent du panneau et le panneau est le parent de l'étiquette. En ce qui concerne votre question: Il est parfaitement correct de passer le formulaire qui contient le cadre en tant que propriétaire. Lorsque le formulaire est libéré, il libère également le cadre. En outre, vous devez définir le parent à un autre contrôle pour que le cadre devienne visible. Cela peut bien sûr aussi être la forme, mais cela n'aura aucun effet sur la libération du cadre.

+0

+1 Bonne réponse! –

+0

Merci, mais dans le cas ci-dessus où le cadre est affiché directement sur le formulaire au lieu de passer par un panneau ou un PageControl ... n'est pas le propriétaire et le parent est le formulaire dans les deux cas? Dans cet exemple, je suppose alors que le cadre sera libéré de la RAM lorsque l'application existera. Je voulais juste vérifier que je peux utiliser cette solution plus simple. – Gulbahar

+0

Oui, si le parent et le propriétaire sont le formulaire, le formulaire dans son rôle de propriétaire libérera le cadre. – dummzeuch

1

être très clair:
- Le propriétaire est responsable de la existence de ses composants appartenant et les libère quand elle se détruit (ils font partie du propriétaire et ne peut pas exister sans elle).
- Le Parent est en charge de montrant ses enfants (contrôles - sans parent leur propriété visible n'a aucun effet) et en tant que tels aussi libre de ses contrôles quand il se détruit parce que personne ne serait en mesure de montrer eux plus.

Questions connexes