System.Classes.TWriter.DefineProperty

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure
function
public
System.Classes.pas
System.Classes.hpp
System.Classes TWriter

Beschreibung

Definiert Daten, die das Writer-Objekt wie eine Eigenschaft schreibt.

DefineProperty wird intern von der Methode DefineProperties eines Objekts aufgerufen, das Daten enthält, die gespeichert werden müssen. DefineProperties verwendet ein generisches Filer-Objekt als Parameter. Wenn Daten geschrieben werden sollen, verwendet DefineProperties ein TWriter-Objekt als Parameter und ruft die Methode DefineProperty des Writer-Objekts auf. Enthält der Parameter HasData den Wert true, schreibt DefineProperty den Namen und die Daten der Eigenschaft. Andernfalls geschieht nichts.

Im Parameter Name wird der Name der benutzerdefinierten Eigenschaft angegeben, die in den Stream geschrieben werden soll.

Der Parameter WriteData verweist auf eine Prozedur (definiert im Komponentenobjekt), welche die Daten des Objekts schreibt, die einen Eigenschaftswert repräsentieren. Für TWriter-Objekte wird der Parameter ReadData nicht berücksichtigt.

Der Parameter HasData bestimmt zur Laufzeit, ob die Eigenschaft Daten enthält, die gespeichert (geschrieben) werden müssen. HasData wird also nur von Writer-Objekten zum Schreiben von Daten verwendet.

Der Unterschied zwischen DefineBinaryProperty und DefineProperty besteht darin, dass bei DefineBinaryProperty die binären Daten direkt in ein Stream-Objekt geschrieben werden, ohne dass ein Filer-Objekt zum Einsatz kommt.

Beim Schreiben einer Komponente mit hohem Datenspeicherungsbedarf kann die Methode DefineProperties der Komponente überschrieben werden. Rufen Sie für jedes Eigenschaftselement die Methode DefineProperty oder DefineBinaryProperty auf. Übergeben Sie die Parameter ReadData und WriteData an die Komponente, die für die Verarbeitung des jeweiligen Datentyps geeignet ist. Beim Lesen wird ReadData aufgerufen. Beim Schreiben wird WriteData aufgerufen.

Anmerkung:  Beim Definieren von Eigenschaften muss eine Komponente die Eigenschaft Ancestor berücksichtigen, die mit einem Wert ungleich nil (Delphi) bzw. ungleich NULL (C++) angibt, dass die Komponente nur Werte von Eigenschaften schreiben darf, die sich von den von Ancestor geerbten unterscheiden.

Siehe auch