コンストラクタとデストラクタのオーバーライド
コンポーネントのプロパティのデフォルト値を変更し,所有クラスを初期化するには,継承コンストラクタと継承デストラクタをオーバーライドしなければなりません。このとき,新しいコンストラクタやデストラクタから必ず継承メソッドを呼び出します。
プロパティのデフォルト値の変更
グラフィックコントロールのデフォルトのサイズは小さいので,幅と高さをコンストラクタで変更します。プロパティのデフォルト値を変更する方法の詳細は,「既存のコンポーネントの変更」を参照してください。
このサンプルでは,図形コントロールを 1 辺が 65 ピクセルの正方形に設定します。
- コンポーネントクラスの宣言でコンストラクタをオーバーライドします。
type
TSampleShape = class(TGraphicControl)
public { コンストラクタは常にパブリック }
constructor Create(AOwner: TComponent); override { override 指令が必要 }
end;
class PACKAGE TSampleShape : public TGraphicControl
{
public:
virtual __fastcall TSampleShape(TComponent *Owner);
};
- Height プロパティと Width プロパティを新しいデフォルト値で再宣言します。
type
TSampleShape = class(TGraphicControl)
.
.
.
published
property Height default 65;
property Width default 65;
end;
class PACKAGE TSampleShape : public TGraphicControl
{
.
.
.
__published:
__property Height;
__property Width;
}
- ユニットの implementataion 部に新しいコンストラクタを記述します。
constructor TSampleShape.Create(AOwner: TComponent);
begin
inherited Create(AOwner); { always call the inherited constructor }
Width := 65;
Height := 65;
end;
__fastcall TSampleShape::TSampleShape(TComponent* Owner) : TGraphicControl(Owner)
{
Width = 65;
Height = 65;
}