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 :
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 :
|
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