プロパティの新しいデフォルト値を宣言する
既存のコンポーネントの変更:インデックス への移動
Delphi は,フォームのデータをフォームファイルに保存する際,デフォルト値と異なる値のプロパティしか保存しません。こうすることでフォームファイルの容量が小さくなり,フォームの読み込みも高速化されます。このため,プロパティを作成したりデフォルト値を変更した場合は,そのプロパティの新しいデフォルト値を宣言します。フォームファイル,プロパティの読み込み,デフォルト値の詳細は,「コンポーネントを設計時に利用できるようにする」を参照してください。
プロパティのデフォルト値を変更するには,そのプロパティの名前を再宣言して default 指令と新しい値を記述します。プロパティ全体を宣言する必要はありません。再宣言するのは,プロパティの名前とデフォルト値だけです。
次に,メモコンポーネントを変更してワードラップを行わないようにする例を示します。オブジェクト宣言の published 部で WordWrap プロパティを再宣言し,デフォルト値として False を記述しています。
type
TWrapMemo = class(TMemo)
.
.
.
published
property WordWrap default False;
end;
//ヘッダーファイル
class PACKAGE TYellowMemo : public TMemo
{
public:
virtual __fastcall TYellowMemo(TComponent* Owner);
__published:
__property Color = {default=clYellow};
};
//実装ファイル
__fastcall TYellowMemo::TYellowMemo(TComponent* AOwner) : TMemo(AOwner)
{
Color = clYellow;
WordWrap = false;
}
//デフォルト値 false の WordWrap を含むヘッダーファイル
class PACKAGE TYellowMemo : public TMemo
{
public:
virtual __fastcall TYellowMemo(TComponent* Owner);
__published:
__property Color = {default=clYellow};
__property WordWrap = {default=false};
};
プロパティのデフォルト値を指定しただけではコンポーネントの動作は変化しません。コンポーネントのコンストラクタで値を初期化する必要があります。デフォルト値を再宣言すると,Delphi には WordWrap をフォームファイルに書き込む時期がわかります。