System.Classes.TReader.DefineBinaryProperty
Delphi
procedure DefineBinaryProperty(const Name: string; ReadData, WriteData: TStreamProc; HasData: Boolean); override;
C++
virtual void __fastcall DefineBinaryProperty(const System::UnicodeString Name, TStreamProc ReadData, TStreamProc WriteData, bool HasData);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | System.Classes.pas System.Classes.hpp |
System.Classes | TReader |
説明
TReader オブジェクトが published プロパティであるかのように読み出すバイナリデータを定義します。
DefineBinaryProperty メソッドは,格納する必要があるデータを持つオブジェクトの DefineProperties メソッドによって内部的に呼び出されます。アプリケーションでは,大きなカスタムデータ(ビットマップなど)を持つコンポーネントの DefineProperties メソッドをオーバーライドするときに,DefineBinaryProperty メソッドを直接呼び出します。これが,DefineBinaryProperty(または DefineProperty)が使用される唯一の状況です。
DefineProperties メソッドは汎用ファイラオブジェクトをパラメータにとります。バイナリデータを読み出す場合,DefineProperties メソッドは TReader オブジェクトをとり,その DefineBinaryProperty メソッドを呼び出します。DefineBinaryProperty メソッドは,プロパティの名前とそのデータを読み出し,データを指定の ReadData メソッドに渡します。
Name パラメータは,ストリーム殻読み出す「fake」プロパティの名前を指定します。「偽の」プロパティとは,パブリッシュになっておらず,DefineBinaryProperty メソッドのコードとして存在しているだけのプロパティです。非ビジュアルコンポーネントの Top プロパティおよび Left プロパティは「偽の」プロパティの例です。これらのプロパティは,「定義済みプロパティ」や「カスタム定義済みプロパティ」という名称でも呼ばれます。
ReadData パラメータと WriteData パラメータは,Stream パラメータとして渡されるストリームに対してバイナリ形式で表現されているオブジェクトのデータを直接読み書きする手続き(コンポーネントオブジェクトで定義)を示します。TReader オブジェクトの場合,WriteData パラメータは無視されます。
HasData パラメータは「偽の」プロパティが格納する(書き込む)データを持つかどうかを実行時に指定します。TReader オブジェクトの場合,HasData パラメータは無視されます。
バイナリプロパティを定義することはほとんどありません。 ただし,オブジェクトが DefineProperty メソッドを使用する方が一般的です。DefineProperty メソッドとは異なり,DefineBinaryProperty メソッドでは,コンポーネントは,ファイラオブジェクトを介するのではなくメモリストリームオブジェクトに対してバイナリプロパティを直接読み出します。バイナリデータもテキストと同様に編集が難しいデータです。
メモ: TPersistent オブジェクトから派生しているストリーム可能なオブジェクトは DefineProperties メソッドを継承しますが,DefineProperties メソッドは TComponent までは何もしません。このため,バイナリデータを読み出す場合にリーダーオブジェクトの DefineBinaryProperty メソッドを呼び出すのは,コンポーネントの DefineProperties メソッドです。