ステップ 2 - 辺の数を指定するプロパティを実装する
FireMonkey のプリミティブ コントロールを作成する への移動
コンポーネントのユーザーが指定できるよう、辺の数を TRegularPolygon コンポーネントにプロパティとして定義する必要があります。プロパティ(名前は NumbersOfSides)を実装するには、TRegularPolygon クラスの published セクションに以下の行を追加します。
property NumberOfSides: Integer;
さらに、public セクションに次のようにコンストラクタの定義を追加します。
constructor Create(AOwner: TComponent); override;
これでコードは次のようになります。
type
TRegularPolygon = class(TShape)
private
{ private 宣言 }
protected
{ protected 宣言 }
public
{ public 宣言 }
constructor Create(AOwner: TComponent); override;
published
{ published 宣言 }
property NumberOfSides: Integer;
end;
これらの行を追加した後で、Ctrl+Shift+C
を押します。すると、NumberOfSides プロパティの設定アクセサ メソッドとコンストラクタのスケルトンが IDE により自動的に追加されます。これでコードは次のようになります。
TRegularPolygon = class(TShape)
private
FNumberOfSides: Integer;
procedure SetNumberOfSides(const Value: Integer);
{ private 宣言 }
protected
{ protected 宣言 }
public
{ public 宣言 }
constructor Create(AOwner: TComponent); override;
published
{ published 宣言 }
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;
どのような多角形でも、辺の数は 3 以上でなければなりません。そのため、SetNumberOfSides メソッドの実装を次のように変更します。
procedure TRegularPolygon.SetNumberOfSides(const Value: Integer);
begin
if (FNumberOfSides <> Value) and (Value >= 3) then
begin
FNumberOfSides := Value;
Repaint;
end;
end;
Repaint メソッドは、辺の数が変更されたときにこのコンポーネントを再描画する必要があるということを FireMonkey フレームワークに知らせるためのものです。コンストラクタでは、FNumbersOfSides フィールドの値を初期化する必要があります(最低でも 3 にするため)。フィールド(プロパティではなく)の値を変更することで、repaint メソッドを無駄に呼び出すことを避けられます。コンストラクタに次のコードを追加します。
constructor TRegularPolygon.Create(AOwner: TComponent);
begin
inherited;
FNumberOfSides := 3;
end;