ステップ 2 - 辺の数を指定するプロパティを実装する

提供: Appmethod Topics
移動先: 案内検索

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;

前のステップ

次のステップ