CREATION DE COMPOSANTS DELPHI
Présentation dans l'inspecteur d'objet

dernière mise à jour le : dimanche 04 mars 2001

Retour au sommaire.
Chapitre précédent
Chapitre suivant

Comment faire pour obtenir des "sous-propriétés" ?

Dans un TForm, si on clique sur la croix à gauche de la propriété Font,

d'autres propriétés s'affichent :

Principe à employer pour obtenir un déroulement similaire :

Dans l'exemple ci-dessus, TForm est une Class dont une des propriétés est une Class (TFont) qui possède elle même des propriétés (Charset, Color...). A noter que TFont possède une propriété Style qui elle même possède des propriétés...

 

Exemple utilisant ce principe :

Créez un nouveau composant qui hérite par exemple d'un TBitBtn (Composants / Nouveau composant...)

On va modifier le source ainsi créé par Delphi pour que ce composant fasse apparaître, dans l'inspecteur d'objet, deux "sous propriétés" :
x et y

Pour cela :

 

unit BitBtn1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;
//déclaration de la class TTest
type
  TTest =class(TPersistent)
  private
    Fx: integer;
    Fy: string;
    procedure Setx(const Value: integer);
    procedure Sety(const Value: string);
    { Déclarations privées }
  protected
    { Déclarations protégées }
  public
    { Déclarations publiques }
  published
     property x :integer read Fx write Setx;
     property y:string  read Fy write Sety;
  end;

  TBitBtn1 = class(TBitBtn)
  private
    Ftest: TTest;
    procedure Settest(const Value: TTest);
    { Déclarations privées }
  protected
    { Déclarations protégées }
  public
    //surcharge du create
    constructor Create(AOwner: TComponent); override;
  published
    //ajout de la propriété de type TTEST
    property test :TTest read Ftest write Settest;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Perso', [TBitBtn1]);
end;

{ TBitBtn1 }

constructor TBitBtn1.Create(AOwner: TComponent);
begin
  inherited;
  //attention ne pas oublier le create de la propriété test
  test:=TTest.create;
  test.x:=0;
end;

procedure TBitBtn1.Settest(const Value: TTest);
begin
  Ftest := Value;
end;

{ TTest }

procedure TTest.Setx(const Value: integer);
begin
  Fx := Value;
end;

procedure TTest.Sety(const Value: string);
begin
  Fy := Value;
end;

end.

 


Retour au sommaire.
Chapitre suivant