System.Classes.TWriter.DefineProperty
Delphi
procedure DefineProperty(const Name: string;
ReadData: TReaderProc; WriteData: TWriterProc;
HasData: Boolean); override;
C++
virtual void __fastcall DefineProperty(const System::UnicodeString Name, TReaderProc ReadData, TWriterProc WriteData, bool HasData);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | System.Classes.pas System.Classes.hpp |
System.Classes | TWriter |
説明
プロパティであるかのようにライターオブジェクトが書き込むデータを定義します。
DefineProperty メソッドは,格納する必要があるデータを持つオブジェクトの DefineProperties メソッドによって内部的に呼び出されます。DefineProperties メソッドは汎用ファイラオブジェクトをパラメータにとります。データを書き込む場合,DefineProperties メソッドは TWriter を受け取ってから,その DefineProperty メソッドを呼び出します。次に DefineProperty メソッドは HasData パラメータが true の場合にのみプロパティ名およびそのデータを書き込みます。それ以外の場合は,何も実行しません。
Name パラメータは,ストリームに書き込む「偽の」プロパティの名前を指定します。
WriteData パラメータは,プロパティの値を表すオブジェクトのデータをライターオブジェクトに書き込み手続き(コンポーネントオブジェクトで定義)を示します。TWriter の場合,ReadData パラメータは無視されます。
HasData パラメータは「偽の」プロパティが格納する(書き込む)データを持つかどうかを実行時に指定します。したがって,ライターオブジェクトはデータを書き込むときに HasData パラメータだけを使用します。
DefineBinaryProperty メソッドと DefineProperty メソッドの相違点は,DefineBinaryProperty メソッドの場合,コンポーネントがファイラオブジェクトを介すのではなく,メモリストリームオブジェクトに直接バイナリデータを読み書きすることです。
特殊な(大きな)データ格納要求を持つコンポーネントを書き込むときには,そのコンポーネントの DefineProperties メソッドはオーバーライドされる場合があります。それぞれの特殊なまたは「偽の」プロパティ項目については,DefineProperty または DefineBinaryProperty を呼び出してください。ReadData パラメータおよび WriteData パラメータについては,特殊なデータ型を処理できるコンポーネントのメソッドに渡してください。読み出すときには ReadData パラメータが呼び出され,書き込むときには WriteData パラメータが呼び出されます。
メモ: プロパティの書き込みメソッドを定義する場合,コンポーネントは Ancestor プロパティを認識していなければなりません。Ancestor プロパティが nil(Deliphi)または NULL (C++)でない場合は Ancestor から継承したプロパティ以外の値だけを書き込まなければならないからです。