Delphi Parent-Owner

 (CD-ROMDelphi.divers\ParentOwner)



: Les projets Delphi


Objectif : Démonstration pratique de la propriété parent d'un contrôle à distinguer de la propriété Owner du contrôle.
 

Documentation Delph-Inprise sur ces deux propriétés :
 



property Parent: TWinControl;
 
 
Parent désigne le parent du contrôle et détermine où le contrôle est affiché.

Utilisez la propriété Parent pour connaître le parent de ce contrôle ou faire d'un contrôle le parent de ce contrôle. Lors de la création d'un nouveau contrôle, affectez toujours une valeur à la propriété Parent du nouveau contrôle. C'est généralement une fiche, un volet, une boîte groupe ou tout autre contrôle conçu pour servir de conteneur. Changer le parent d'un contrôle déplace le contrôle à l'écran afin qu'il s'affiche à l'intérieur de son parent.

Le parent d'un contrôle est le contrôle fenêtré contenant le contrôle. Si un contrôle (le parent) en contient d'autres, les contrôles contenus sont appelés contrôles enfant du parent. Par exemple, si une application contient trois boutons radio dans une boîte groupe, la boîte groupe est le parent des trois boutons radio, et les boutons radio sont les contrôles enfant de la boîte groupe.
 
 
Ne confondez pas la propriété Parent déclarée dans TControl avec la propriété Owner déclarée dans TComponent :
  • Le Parent d'un contrôle est toujours un contrôle fenêtré contenant visuellement le contrôle en question. 

  •  
  • Le Owner d'un composant est le composant qui a été transmis en paramètre dans le constructeur et qui utilise le composant comme élément constitutif.

property Owner: TComponent;
 
 
Owner indique le composant qui possède ce composant.

La propriété Owner permet de connaître le propriétaire d'un composant. Lorsqu'un composant est possédé par un autre, la mémoire du composant possédé est libérée quand la mémoire du propriétaire est libérée. Ainsi, cela signifie que lorsqu'une fiche est détruite, tous les composants de la fiche le sont également.

Dans Delphi, une fiche possède tous les composants apparaissant dedans et la fiche est elle-même possédée par l'application. Donc, si la mémoire de l'application est libérée, la mémoire de toutes ses fiches (et des composants qu'elles possèdent) l'est également.

La propriété Owner d'un composant est déterminée par le paramètre transmis à la méthode Create lors de la construction du composant. Pour les composants créés dans le concepteur de fiches de Delphi, le propriétaire est automatiquement transmis au constructeur.


La fiche principale, le code associé dans la unit
 

Exécuter le programme
 

La fiche principale du  projet :

........
 
 

Le code de la Unit fiche principale :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    SpeedButtonParentFiche: TSpeedButton;
    SpeedButtonParentpanel: TSpeedButton;
    Label1: TLabel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    LabelInfo: TLabel;
    Panel1: TPanel;
    Edit1: TEdit;
    LabelBonjour: TLabel;
    procedure SpeedButtonParentFicheClick(Sender: TObject);
    procedure SpeedButtonParentpanelClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.SpeedButtonParentFicheClick(Sender: TObject);
begin
 EDit1.parent:=Form1;
 LabelBonjour.parent:=Form1;
 LabelInfo.Caption:='Edit.parent = Label.parent = Form1'
end;

procedure TForm1.SpeedButtonParentpanelClick(Sender: TObject);
begin
 EDit1.parent:=Panel1;
 LabelBonjour.parent:=Panel1;
 LabelInfo.Caption:='Edit.parent = Label.parent = Panel'
end;

end.                                                                      Remonter 



EXECUTION DU PROGRAMME :