Définition des propriétés des classes ayant un propriétaire

De RAD Studio
Aller à : navigation, rechercher

Remonter à Création d'un composant graphique - Index

L'une des dernières étapes de la gestion des classes crayon et pinceau consiste à provoquer un nouveau dessin du contrôle forme si le crayon ou le pinceau est modifié. Comme les classes crayon et pinceau disposent toutes les deux d'un événement OnChange, vous pouvez créer une méthode dans le contrôle forme et faire pointer les deux événements OnChange sur cette méthode.

Ajoutez la méthode suivante au contrôle forme et effectuez la mise à jour du constructeur du composant pour affecter aux événements du crayon et du pinceau cette nouvelle méthode :



 type
   TSampleShape = class(TGraphicControl)
   published
     procedure StyleChanged(Sender: TObject);
   end;
 .
 .
 .
 implementation
 .
 .
 .
 constructor TSampleShape.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);  { appeler toujours le constructeur hérité }
   Width := 65;
   Height := 65;
   FPen := TPen.Create;                                               { construire le crayon }
   FPen.OnChange := StyleChanged;                       { affecter la méthode à l'événement OnChange }
   FBrush := TBrush.Create;                                         { construire le pinceau }
   FBrush.OnChange := StyleChanged;                     { affecter la méthode à l'événement OnChange }
 end;
 procedure TSampleShape.StyleChanged(Sender: TObject);
 begin
   Invalidate;                                    { effacer et redessiner le composant }
 end;



 
 // fichier en-tête
 class PACKAGE TSampleShape : public TGraphicControl
 {
   .
   .
   .
 public:
     void __fastcall StyleChanged(TObject* Owner);
     .
     .
     .
 };



 
 // fichier d'implémentation
 __fastcall TSampleShape::TSampleShape(TComponent* Owner) : TGraphicControl(Owner)
 {
   Width = 65;
   Height = 65;
   FBrush = new TBrush();
   FBrush->OnChange = StyleChanged;
   FPen = new TPen();
   FPen->OnChange = StyleChanged;
 }



 
 //inclut également la méthode StyleChanged dans le fichier d'implémentation
 void __fastcall TSampleShape::StyleChanged( TObject* Sender)
 {
   Invalidate();         // redessine le composant
 }



Ces modifications faites, le composant se redessine pour refléter tout changement du crayon ou du pinceau.