System.Variants.TInvokeableVariantType
Delphi
TInvokeableVariantType = class(TCustomVariantType, IVarInvokeable)
C++
class PASCALIMPLEMENTATION TInvokeableVariantType : public TCustomVariantType
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
class | public | System.Variants.pas System.Variants.hpp |
System.Variants | System.Variants |
説明
TInvokeableVariantType は,カスタム Variant 型にプロパティとメソッドを実装するためのカスタム Variant 型の基本クラスです。
プロパティやメソッドを持つ,Delphi のバリアント型に対応する新しいデータ型を定義するには,TInvokeableVariantType を使用してください。TInvokeableVariantType の下位クラスは,バリアント自体を表しません。処理を実行するためにカスタム Variant が呼び出すユーティリティクラスとして機能します。
メモ: C++ では,TInvokeableVariantType の子孫を定義しないでください。カスタム Variant 型のロジックは,Delphi のコードで定義する必要があります。
プロパティとメソッドをサポートする Variant 型を作成する手順は次のとおりです。
- バリアント型データの記憶域を TVarData レコードにマッピングします。
- カスタム Variant のインスタンスを作成するメソッドを記述します。これにより,手順 1 で定義された Variant のデータにデータが書き込まれます。
- TInvokeableVariantType から派生したクラスを宣言します。
- 新しいクラスに必要な動作(型変換規則など)を実装します。このとき,適切な仮想メソッド(通常は DoFunction,DoProcedure,GetProperty,SetProperty,BinaryOp,UnaryOp,CompareOp,または Compare,Cast,CastTo,Clear,Copy,IsClear,LeftPromotion,RightPromotion)をオーバーライドします。
- TInvokeableVariantType の下位クラスを定義するユニットの initialization 部で,クラスのインスタンスを作成します。オブジェクトをインスタンス化すると,自動的に Variant 処理システムに登録され,新しい Variant 型が有効になります。
- TInvokeableVariantType の下位クラスを定義するユニットの初期化クラスで,クラスのインスタンスを解放します。これにより,Variant 型は自動的に登録解除されます。
例として,VarConv ユニットを参照してください。これは,寸法のカスタム Variant 型を実装します。
ヒント: カスタム Variant 型がオブジェクトインスタンスを使ってデータを保存する場合,かわりに TPublishableVariantType からカスタム Variant 型を派生させることで,そのオブジェクトのパブリッシュプロパティを自動的に実装できます。