Définition des propriétés des classes ayant un propriétaire
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.