System.Classes.TWriter.DefineProperty

De RAD Studio API Documentation
Aller à : navigation, rechercher

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

Propriétés

Type Visibilité  Source Unité  Parent
procedure
function
public
System.Classes.pas
System.Classes.hpp
System.Classes TWriter

Description

Traite les données écrites par l'objet écrivain, comme s'il s'agissait d'une propriété.

La méthode DefineProperty est appelée de manière interne par la méthode DefineProperties pour traiter un objet ayant des données à stocker. DefineProperties attend comme paramètre un objet filer générique. Pour écrire les données, DefineProperties attend un objet TWriter, puis appelle la méthode DefineProperty de l'objet écrivain. Ensuite, si la propriété HasData a la valeur true, DefineProperty écrit le nom de la propriété et ses données. Sinon, elle ne fait rien.

Le paramètre Name spécifie le nom de la "simili" propriété à écrire dans le flux.

Le paramètre WriteData pointe sur une procédure (définie dans l'objet de stockage) écrivant les données de l'objet qui représentent pour l'objet écrivain une valeur de propriété. Pour TWriter, le paramètre ReadData est ignoré.

Le paramètre HasData détermine à l'exécution si la "simili" propriété contient des données à écrire. Les objets écrivain n'utilisent donc HasData que pour l'écriture de données.

Dans DefineBinaryProperty, à la différence de DefineProperty, la propriété binaire est écrite directement dans un objet flux au lieu de passer par un objet filer.

Pour l'écriture d'un composant nécessitant un gros volume de données, il est possible de surcharger DefineProperties. Pour chaque "simili" propriété, appelez DefineProperty ou DefineBinaryProperty. Pour les paramètres ReadData et WriteData, transmettez des méthodes de composant sachant gérer ces types de données particuliers. ReadData est appelée à la lecture. WriteData est appelée à l'écriture.

Remarque :  Lors de la définition de propriétés, un composant doit tenir compte de la propriété Ancestor. Si elle est non nil (Delphi) ou non NULL (C++), cela signifie que le composant ne doit écrire que les valeurs des propriétés différentes de celles héritées de leur ancêtre.

Voir aussi