8.2 ATTRIBUTE

LANSA

8.2 ATTRIBUTE


新しいRDMLXコマンドであるATTRIBUTEを使用すれば、宣言属性をコンポーネント・クラスの機能に割り当てることができます。

ATTRIBUTEコマンドは、以下のコマンドの直後に記述できます。

·         BEGIN_COM

·         DEFINE_COM

·         DEFINE_PTY

·         DEFINE_EVT

·         MTHROUTINE

·         DEFINE_MAP

Visual LANSAは、基本的に命令言語ですが、他の命令言語の場合と同じように宣言的な要素もいくらか含んでいます。例えば、FUNCTIONコマンドでは、ファンクションやコンポーネントに宣言属性を割り当てることができ、そのような属性は、LANSAのビルド環境や実行時環境で後から処理することが可能です。

Visual LANSAは、属性のサポートによってこの機能を汎用化しているので、プログラマとしては、新しい種類の宣言情報を作成し、その宣言情報をさまざまなプログラム要素に組み込み、実行時にその宣言情報を取得することが可能になっています。コンポーネントでは、属性の定義と使用によって、その追加の宣言情報を指定します。

例えば、Visual LANSAでは、WinHelpAttribute属性を定義して、ビジュアル・メンバー変数などのプログラム要素に組み込むことができるので、開発者としては、F1キーを押すことによってWindowのヘルプを独自のアプリケーションのために表示するといった機能を実現できます。

また、RDMLXソース・コードと一緒に関連した宣言情報を格納(コピー)することも可能になっています。

属性クラスは、ActiveX統合に対応したコンポーネント・クラスのタイプ・ライブラリ情報の管理で重要な役割を果たします。

コンポーネント・ソースにAttributeステートメントを手動で宣言することもできますが、ActiveX属性の詳細を指定するには自動ActiveXツールを使用することを強くお勧めします。

属性クラス

抽象クラス#PRIM_ATTRから直接的または間接的に継承しているコンポーネント・クラスは、属性クラスです。LANSAが提供する属性クラスだけがサポートされています。

属性の使用法

属性クラスのAttributeUsage属性によって、属性の使用法を記述します。

AttributeUsage属性のコンストラクタには、その属性を使用できる宣言の種類を属性クラスで指定するための定位置パラメータがあります。

AttributeUsageのコンストラクタには、その属性を1つの宣言に対して複数回指定できるかどうかを記述するためのオプション・パラメータも含まれています。

インスタンス・コンストラクタ

属性クラスのインスタンス・コンストラクタでは、属性の定義を完成させるために必要な必須パラメータとオプション・パラメータを定義します。

リフレクション

Visual LANSAのタイプ、メソッド、イベント、プロパティや各機能のプロパティにアクセスできるコンポーネント・クラスには、それぞれの機能に割り当てられている属性にアクセスできるプロパティが用意されています。

参照

ATTRIBUTEのパラメータ

ATTRIBUTEの使用例

 

                                                           必須/省略可      

                                                                         

   ATTRIBUTE -----CLASS -------クラス名 ------------------------>      

                                                                         

   -------------------------------------------------------------------   

                                                                         

                                                           任意指定      

                                                                         

              >-- DESC ------- イベントの短い記述 -------->

                                                                         

              >-- HELP ------- 属性の長い記述 -->