Etape 2 - Implémenter une propriété pour spécifier le nombre de côtés
Remonter à Création d'un contrôle primitif FireMonkey
Le composant TRegularPolygon doit définir le nombre de côtés en tant que propriété afin que les utilisateurs du composant puissent le spécifier. Pour implémenter une propriété (nommée NumbersOfSides), ajoutez la ligne suivante à la section published de la classe TRegularPolygon :
property NumberOfSides: Integer;
En outre, ajoutez une définition du constructeur à la section public, comme suit :
constructor Create(AOwner: TComponent); override;
Le code doit donc ressembler à ceci :
type
TRegularPolygon = class(TShape)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property NumberOfSides: Integer;
end;
Après l'insertion de ces lignes, appuyez sur CTRL+MAJ+C
. L'EDI ajoute automatiquement l'accesseur en écriture pour la propriété NumberOfSides, et un squelette pour le constructeur. Le code doit maintenant ressembler à ceci :
TRegularPolygon = class(TShape)
private
FNumberOfSides: Integer;
procedure SetNumberOfSides(const Value: Integer);
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property NumberOfSides: Integer read FNumberOfSides write SetNumberOfSides;
end;
constructor TRegularPolygon.Create(AOwner: TComponent);
begin
inherited;
end;
procedure TRegularPolygon.SetNumberOfSides(const Value: Integer);
begin
FNumberOfSides := Value;
end;
Comme avec chaque polygone, le nombre de côtés doit être au moins de 3. Changez donc l'implémentation de la méthode SetNumberOfSides comme suit :
procedure TRegularPolygon.SetNumberOfSides(const Value: Integer);
begin
if (FNumberOfSides <> Value) and (Value >= 3) then
begin
FNumberOfSides := Value;
Repaint;
end;
end;
La méthode Repaint indique au framework FireMonkey que ce composant doit être redessiné quand le nombre de côtés change. Dans le constructeur, vous devez initialiser la valeur du champ FNumbersOfSides (pour lui attribuer au minimum 3). En changeant le champ (au lieu d'une propriété), vous évitez les appels inutiles à la méthode de dessin. Ajoutez le code suivant au constructeur :
constructor TRegularPolygon.Create(AOwner: TComponent);
begin
inherited;
FNumberOfSides := 3;
end;