API:System.TypInfo.TPublishableVariantType

De RAD Studio API Documentation
Aller à : navigation, rechercher

System.Variants.TInvokeableVariantTypeSystem.Variants.TCustomVariantTypeSystem.TNoRefCountObjectSystem.TObjectTPublishableVariantType

Delphi

TPublishableVariantType = class(TInvokeableVariantType, IVarInstanceReference)

C++

class PASCALIMPLEMENTATION TPublishableVariantType : public System::Variants::TInvokeableVariantType

Propriétés

Type Visibilité  Source Unité  Parent
class public
System.TypInfo.pas
System.TypInfo.hpp
System.TypInfo System.TypInfo

Description

TInvokeableVariantType est la classe de base des types Variant personnalisés qui implémentent des Variants personnalisés dotés de propriétés et de méthodes.

System.TypInfo.TPublishableVariantType hérite de System.Variants.TInvokeableVariantType. Tout le contenu en-dessous de cette ligne se réfère à System.Variants.TInvokeableVariantType.

TInvokeableVariantType est la classe de base des types Variant personnalisés qui implémentent des Variants personnalisés dotés de propriétés et de méthodes.

Utilisez TInvokeableVariantType pour définir de nouveaux types de données pour les variants Delphi dotés de propriétés et de méthodes. Les descendants de TInvokeableVariantType ne représentent pas les Variants eux-mêmes. Ils font office de classes utilitaires que les variants personnalisés appellent pour réaliser leurs opérations.

Remarque :  Ne définissez pas les descendants de TInvokeableVariantType dans C++. La logique des types de Variants personnalisés doit être définie dans le code Delphi.

Pour créer un type Variant acceptant des propriétés et des méthodes :

  1. Etablissez une correspondance entre le stockage des données du Variant et l'enregistrement TVarData.
  2. Ecrivez une méthode qui crée des instances de votre Variant personnalisé. Cette méthode remplit les données du Variant tel que défini à l'étape 1.
  3. Déclarez une classe qui dérive de TInvokeableVariantType.
  4. Implémentez tous les comportements requis (y compris les règles de conversion de type) dans la nouvelle classe. Cela suppose la redéfinition des méthodes virtuelles appropriées (généralement DoFunction, DoProcedure, GetProperty, SetProperty, BinaryOp, UnaryOp, CompareOp or Compare, Cast, CastTo, Clear, Copy, IsClear, LeftPromotion et RightPromotion).
  5. Dans la section d'initialisation de l'unité qui définit votre descendant de TInvokeableVariantType, créez une instance de votre classe. Lorsque vous instanciez votre objet, il se recense automatiquement avec le système de traitement des Variants afin que le nouveau type Variant soit activé.
  6. Dans la section de finalisation de l'unité qui définit votre descendant de TInvokeableVariantType, libérez l'instance de votre classe. Cela permet de dérecenser automatiquement le type Variant.

Pour consulter un exemple, reportez-vous à l'unité VarConv qui implémente un type Variant personnalisé pour les mesures.

Conseil :  Si le type Variant personnalisé utilise une instance d'objet pour stocker ses données, vous pouvez implémenter automatiquement les propriétés publiées de cet objet en dérivant votre type Variant personnalisé de TPublishableVariantType à la place.

Voir aussi