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