[ |../../index.htm#lansa/l4wdev06_0095.htm]
現在地:
2.19 データ・クラス
データ・クラスは、値を定義するが表示されないコンポーネントです。多くの場合、データ・クラスはリポジトリのフィールドに対応します。
リポジトリからフォームにフィールドをドラッグすると、フィールドのビジュアライゼーションが作成されます。これを試すために、フィールド#SALARYをフォームにドラッグします。フィールドのこの定義が作成されます。
DEFINE_COM class(#SALARY.Visual) name(#SALARY)
ここで、クラスが#SALARY.Visualであることに注意してください。Visualクラスは、値を表示し、ユーザーの入力を受け入れるコンポーネントを作成します。エディターの[詳細]タブで、Visualクラスのすべてのプロパティを見ることができます。大部分は、フィールドが表示される方法を制御します。
今度は、クラスの名前からVisualの修飾子を削除します。
DEFINE_COM class(#SALARY) name(#SALARY)
この変更されたステートメントは、#SALARYのデータ・クラスのコンポーネントを定義するようになりました。フィールドは、フォームに表示されなくなります(ビジュアル表示されていないため)。データ・クラスのコンポーネントは、コンポーネントの値を記述するだけです。つまり、コンポーネントの基本的な特性(データ・タイプ、長さ、小数点など)です。
エディターの[詳細]タブで、#SALARYデータ・クラスのプロパティを見ることができます。#SALARY.Visualクラスと比較すると、プロパティの数が非常に少ないことに注目してください。
![]()
データ・クラスの使用
データ・クラス・コンポーネントを使用すると、以下のことができます。
変数を作成する |
フィールドまたはprimitiveデータクラスの特性(タイプ、プロパティなど)を持つ簡単な変数を作成する場合。 |
スピン編集ボックス内 |
スピン編集ボタンがついた数値フィールドを表示する場合は、フォームにスピン編集ボックスを追加し、それからフィールドをスピン編集のDataClassプロパティの値として指定します。 |
コンボ・ボックス内 |
コンボ・ボックスの編集部分に入力される値にフィールドの特性(タイプや長さ)とルールを適用するには、フィールドをコンボ・ボックスのDataClassプロパティの値として指定します。 |
プロパティ・シート内 |
プロパティ・シートのエントリーを作成する場合。プロパティ・シートの各エントリーにデータ・クラスを割り当て、エントリーの値を表示したり変更する方法を処理します。「2.21 プロパティ・シート」を参照してください。 |
変数としてのデータ・クラス
データ・クラス・コンポーネントをリポジトリに登録されているフィールドに基づいて定義できます。以下は、自分のデータ・クラス・コンポーネントを定義する方法の例です。
DEFINE_COM class(#GIVENAME) name(#USER_GIVENAME) DEFINE_COM class(#EMPNO) name(#LAST_EMPNO) DEFINE_COM class(#SALARY) name(#SALARY) DEFINE_COM class(#SALARY) name(#OLD_SALARY) DEFINE_COM class(#SALARY) name(#NEW_SALARY)
以下のようにコマンドを使用してコンポーネントを操作します。
SET com(#SALARY) value(34000.56) SET com(#OLD_SALARY) value(12567.45) SET com(#NEW_SALARY) value(#OLD_SALARY.Value) IF cond('#SALARY.Value <= #OLD_SALARY.Value')
上の#SALARY、#OLD_SALARY、および#NEW_SALARYは、すべて#SALARYクラスのコンポーネントです。クラス定義は、タイプ、長さ、小数部の桁数などを定義します。
重要なことですが、LANSAリポジトリの#SALARYは、オブジェクトのクラスを定義します。コンポーネントのインスタンスは、定義しません。インスタンスは、DEFINE_COMステートメントで定義され、異なる名前を持つ多数のインスタンスが存在します。デフォルトでは、コーディングを簡単にするために、コンポーネントはクラスと同じ名前になります。
このコンポーネントは、簡単なので自分の#EMPNO、#SALARY、#GIVENAMEなどを処理する場合に比較的簡単に理解できます。
ただし、リポジトリには、LANSA組み込みのその他のクラスが多くあります。これらのコンポーネントは、「primitive」と呼ばれ、名前が#PRIM_で始まります。例えば、#PRIM_ALPHは、primitiveの英数字データ・クラスで、#PRIM_NMBRは、primitiveの数値データ・クラスです。primitiveのコンポーネントは、自分のクラス(またはフィールド)と同様に使用してコード内でコンポーネントを定義できます。
例えば、コード内の文字列変数を定義するには、以下のようにprimitiveの英数字変数に基づいて#MYSTRINGコンポーネントを定義します。
DEFINE_COM class(#PRIM_ALPH) name(#MYSTRING)
それからこのコンポーネントをコードで使用します。
SET com(#MYSTRING) value(#EMPNO)
同様に、コード内で数値の変数を定義するには、以下のようにprimitiveの数値データ・クラスに基づいて#MYNUMBERコンポーネントを定義します。
DEFINE_COM class(#PRIM_NMBR) name(#MYNUMBER)
primitiveデータ・クラスは、「2.21 プロパティ・シート」の「2.21.2 ピックリスト」を作成するなど特別な使用法もあります。
[ |../../index.htm#lansa/l4wdev06_0095.htm]