Schritt 2 - Implementieren einer Eigenschaft zum Angeben der Seitenanzahl
Nach oben zu Erstellen eines grundlegenden FireMonkey-Steuerelements
Für die TRegularPolygon-Komponente muss die Anzahl der Seiten als Eigenschaft definiert werden, damit Komponentenbenutzer die Seitenzahl festlegen können. Fügen Sie dem published-Abschnitt der Klasse TRegularPolygon die folgende Zeile hinzu, um eine Eigenschaft (namens NumbersOfSides) zu implementieren:
property NumberOfSides: Integer;
Fügen Sie außerdem dem public-Abschnitt eine Definition des Konstruktors wie folgt hinzu:
constructor Create(AOwner: TComponent); override;
Der Code sollte nun wie folgt lauten:
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;
Drücken Sie nach Einfügen dieser Zeilen STRG+UMSCHALT+C
. Die IDE fügt automatisch die Methode zum Setzen der Eigenschaft NumberOfSides und eine Struktur (Skeleton) für den Konstruktor hinzu. Der Code sollte nun wie folgt lauten:
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;
Wie bei jedem Polygon muss die Anzahl der Seiten mindestens 3 betragen. Ändern Sie daher die Implementierung der Methode SetNumberOfSides wie folgt:
procedure TRegularPolygon.SetNumberOfSides(const Value: Integer);
begin
if (FNumberOfSides <> Value) and (Value >= 3) then
begin
FNumberOfSides := Value;
Repaint;
end;
end;
Durch die Methode Repaint wird dem FireMonkey-Framework mitgeteilt, dass diese Komponente neu gezeichnet werden muss, wenn sich die Seitenanzahl ändert. Im Konstruktor müssen Sie den Wert des Feldes FNumbersOfSides (mit 3, dem Minimum) initialisieren. Durch Ändern des Feldes (anstatt der Eigenschaft) vermeiden Sie unnötige Aufrufe der Methode Repaint. Fügen Sie dem Konstruktor den folgenden Code hinzu:
constructor TRegularPolygon.Create(AOwner: TComponent);
begin
inherited;
FNumberOfSides := 3;
end;