所有クラスのプロパティの設定

提供: RAD Studio
移動先: 案内検索

グラフィック コンポーネントの作成:インデックス への移動

最後に,ペンとブラシが変更された際に図形コントロールが自分自身を再描画するようにします。ペンクラスとブラシクラスには OnChange イベントがあるので,図形コントロールでメソッドを作成し,両方の OnChange イベントがそのメソッドを指すようにします。

図形コントロールにメソッドを記述します。また,コンポーネントのコンストラクタで,ペンとブラシの OnChange イベントがその新しいメソッドを指すように設定します。このようすを次に示します。



 type
   TSampleShape = class(TGraphicControl)
   published
     procedure StyleChanged(Sender: TObject);
   end;
 .
 .
 .
 implementation
 .
 .
 .
 constructor TSampleShape.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);                      { always call the inherited constructor }
   Width := 65;
   Height := 65;
   FPen := TPen.Create;                                               { ペンを構築 }
   FPen.OnChange := StyleChanged;                       { OnChange イベントにメソッドを割り当て }
   FBrush := TBrush.Create;                                         { ブラシを構築 }
   FBrush.OnChange := StyleChanged;                     { OnChange イベントにメソッドを割り当て }
 end;
 procedure TSampleShape.StyleChanged(Sender: TObject);
 begin
   Invalidate;                                    { コンポーネントを消去して再描画 }
 end;



 
 //ヘッダーファイル
 class PACKAGE TSampleShape : public TGraphicControl
 {
   .
   .
   .
 public:
     void __fastcall StyleChanged(TObject* Owner);
     .
     .
     .
 };



 
 //実装ファイル
 __fastcall TSampleShape::TSampleShape(TComponent* Owner) : TGraphicControl(Owner)
 {
   Width = 65;
   Height = 65;
   FBrush = new TBrush();
   FBrush->OnChange = StyleChanged;
   FPen = new TPen();
   FPen->OnChange = StyleChanged;
 }



 
 //実装ファイルに StyleChanged も追加
 void __fastcall TSampleShape::StyleChanged( TObject* Sender)
 {
   Invalidate();         // コンポーネントの再描画
 }



これで,ペンまたはブラシを変更するとコンポーネントが再描画されるようになりました。