Etape 2 - Implémenter une propriété pour spécifier le nombre de côtés

De Appmethod Topics
Aller à : navigation, rechercher

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;

Précédent

Suivant