System.Variants.TInvokeableVariantType

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

System.Variants.TCustomVariantTypeSystem.TObjectTInvokeableVariantType

Delphi

TInvokeableVariantType = class(TCustomVariantType, IVarInvokeable)

C++

class PASCALIMPLEMENTATION TInvokeableVariantType : public TCustomVariantType

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
class public
System.Variants.pas
System.Variants.hpp
System.Variants System.Variants

Beschreibung

TInvokeableVariantType ist die Basisklasse für Typen, die benutzerdefinierte Variant-Objekte mit Eigenschaften und Methoden implementieren.

Mit TInvokeableVariantType können Sie neue Datentypen für Delphi-Varianten mit Eigenschaften und Methoden definieren. Die von TInvokeableVariantType abgeleiteten Objekte entsprechen nicht den Varianten selbst. Sie dienen als Hilfsklassen, die von benutzerdefinierten Varianten zum Durchführen von Operationen verwendet werden.

Anmerkung:  Definieren Sie keine von TInvokeableVariantType abgeleitete Klassen in C++. Die Logik für benutzerdefinierte Variant-Ttypen muss im Delphi-Quelltext definiert werden.

So erstellen Sie einen Variant-Typ, der Eigenschaften und Methoden unterstützt:

  1. Ordnen Sie den Speicherplatz für die Daten eines Variant-Objekts einem TVarData-Record zu.
  2. Schreiben Sie eine Methode, die Instanzen des benutzerdefinierten Variant-Typs erstellt. In dieser Methode werden dem Record die Daten des Variant-Objekts zugewiesen (siehe Schritt 1).
  3. Deklarieren Sie eine von TInvokeableVariantType abgeleitete Klasse.
  4. Implementieren Sie in der neuen Klasse die gewünschten Funktionen (einschließlich der Regeln zur Typumwandlung). Hierzu müssen die betreffenden virtuellen Methoden (in der Regel DoFunction, DoProcedure, GetProperty, SetProperty, BinaryOp, UnaryOp, CompareOp oder Compare, Cast, CastTo, Clear, Copy, IsClear, LeftPromotion und RightPromotion) überschrieben werden.
  5. Erstellen Sie im initialization-Abschnitt der Unit, in der Ihr TInvokeableVariantType-Nachkomme deklariert ist, eine Instanz der Kasse. Beim Instantiieren des Objekts wird es automatisch für das Variant-Verarbeitungssystem registriert, damit der neue Variant-Typ genutzt werden kann.
  6. Geben Sie im finalization-Abschnitt der Unit, in der Ihr TInvokeableVariantType-Nachkomme deklariert ist, die Instanz der Kasse frei. Dadurch wird die Registrierung des Variant-Typs automatisch aufgehoben.

Beachten Sie beispielsweise die Unit VarConv, die einen benutzerdefinierten Variant-Typ für Maßangaben implementiert.

Tip: Wenn der benutzerdefinierte Variant-Typ eine Objektinstanz zum Speichern der Daten verwendet, können Sie die als published deklarierten Eigenschaften dieses Objekts automatisch implementieren, indem Sie Ihren benutzerdefinierten Variant-Typ stattdessen von TPublishableVariantType ableiten.

Siehe auch