Schritt 2 - Implementieren einer Eigenschaft zum Angeben der Seitenanzahl

Aus RAD Studio
Wechseln zu: Navigation, Suche

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;

Zurück

Weiter