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);
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
procedure function |
public | System.Classes.pas System.Classes.hpp |
System.Classes | TReader |
Description
Définit les données binaires lues par l'objet lecteur comme si elles étaient une propriété publiée.
La méthode DefineBinaryProperty est appelée de manière interne par la méthode DefineProperties pour traiter un objet ayant des données à stocker. Les utilisateurs peuvent appeler directement DefineBinaryProperty en surchargeant la méthode DefineProperties d'un composant utilisant des données personnalisées volumineuses (par exemple un bitmap). C'est uniquement dans ce contexte qu'il faut utiliser les méthodes DefineBinaryProperty et DefineProperty.
DefineProperties attend comme paramètre un objet filer générique. Pour lire des données binaires, DefineProperties attend un objet TReader et appelle sa méthode DefineBinaryProperty. DefineBinaryProperty lit ensuite le nom de la propriété et ses données, et il transmet les données à la méthode spécifiée par ReadData.
Le paramètre Name spécifie le nom de la "simili" propriété à lire dans le flux. Une "simili" propriété est une propriété non publiée qui n'existe donc que dans le code de la méthode DefineBinaryProperty. Les propriétés Top et Left d'un composant non visuel sont des exemples de "simili" propriété. Elles sont également appelées "propriétés définies" ou "propriétés à définition personnalisée".
Les paramètres ReadData et WriteData pointent sur une procédure (définie dans l'objet composant) lisant ou écrivant directement une représentation binaire des données de l'objet dans le flux spécifié par le paramètre Stream. Pour TReader, le paramètre WriteData est ignoré.
Le paramètre HasData détermine à l'exécution si la "simili" propriété contient des données à écrire. Pour TReader, le paramètre HasData est ignoré.
Les propriétés définies binaires sont peu fréquentes. Plus couramment, les objets utilisent la méthode DefineProperty. DefineBinaryProperty, à la différence de DefineProperty, lit directement les propriétés d'un flux mémoire au lieu de passer par l'objet filer. Les données binaires sont également plus difficiles à éditer comme texte.
Remarque : Les objets manipulables par des flux qui dérivent de TPersistent héritent de la méthode DefineProperties. Cependant, DefineProperties ne fait rien avant TComponent. La méthode DefineProperties d'un objet composant appelle donc la méthode DefineBinaryProperty d'un objet lecteur afin de lire des données binaires.