II. Choix du composant à développer▲
J'ai choisi de développer avec vous un composant qui représentera un graphique circulaire. Ses différents quartiers seront choisis avec une propriété.
Nous verrons comment on peut utiliser les collections pour cette propriété qui devra enregistrer chaque quartier.
De plus, cela permettra de rappeler aux développeurs qui ont quitté l'école depuis longtemps que leurs cours de trigonométrie n'ont pas servi à rien, puisque nous utiliserons les formules trigonométriques pour dessiner les quartiers.
Nous verrons aussi comment on peut détecter dans quel quartier on a cliqué afin d'envoyer des informations détaillées au gestionnaire d'événement.
Finalement, nous verrons, par l'exemple des Hints, comment intercepter un message Windows non standard grâce à la directive de méthode message.
Nous nommerons ce composant TCircleChart. Créez une nouvelle unité CircChart.pas dans le paquet ComposTutoR.bpl.
La classe TCircleChart devra hériter de la classe TGraphicControl. C'est de cette classe qu'il faut hériter lorsqu'on veut créer un composant graphique de toutes pièces.
type
TCircleChart = class
(TGraphicControl)
end
;
À nouveau, nous aurions dû d'abord créer une classe TCustomCircleChart, mais nous oublierons cela pour nous concentrer sur le code utile du composant. Cette habitude de programmation sera détaillée dans le prochain composant, car là nous en aurons besoin.
III. Comment dessiner le contrôle ?▲
La chose la plus importante dans un composant graphique est sans aucun doute son dessin. Borland a bien fait les choses en ce qui concerne le TGraphicControl, puisque celui-ci propose une méthode virtuelle Paint dans laquelle on peut dessiner sur le composant au moyen de sa propriété Canvas.
Cette méthode est déclarée protégée dans TGraphicControl, et il n'y a aucune raison de modifier cette visibilité, puisque cette méthode ne doit jamais être appelée directement.
protected
procedure
Paint; override
;
Nous allons placer un code simple pour l'illustration. Ce code dessine une ellipse de la couleur indiquée par la propriété Color, héritée de TControl. Nous l'améliorerons une fois que la propriété pour les quartiers sera créée.
procedure
TCircleChart.Paint;
begin
with
Canvas do
begin
Brush.Color := Color;
Brush.Style := bsSolid;
Pen.Style := bsClear;
Ellipse(0
, 0
, Width, Height);
end
;
end
;