プロパティーの概要

プロパティー・セットは、パーツの特定のオプションを指定します。通常、パーツの作成時にプロパティーを指定すると、そのプロパティーは静的になります。 ただし、特定の環境において、プロパティーを動的に変更することができます。

パーツごとおよびステレオタイプごとに、使用可能なプロパティーが異なります。パーツの作成時に、どのプロパティーが適切であるかを確認してください。 一部のパーツではプロパティーが必須になることもありますが、ほとんどのプロパティーはオプションです。

最も一般的なタイプのプロパティーはシンプル・プロパティー です。 これは、パーツのオプションを設定する、名前と値のペアです。パーツ定義の先頭に、プロパティーの名前と値を中括弧 ({ }) 内にリストすることで、ほとんどのパーツで 1 つ以上のシンプル・プロパティーを受け入れることが可能になります。パーツに複数のプロパティーを指定するときは、名前と値のペアをコンマで区切ってください。
DataItem cost money(10,2) 
    {Currency = yes,
     CurrencySymbol = "$"}
end
左中括弧で始まり右中括弧で終わるコード・ブロック (つまり、プロパティーとその値のリスト) は、値の設定ブロック と呼ばれます。

プロパティーは、特定の状態でのみ有効となります。 例えば、DataItem パーツには、特定のタイプのユーザー・インターフェースのみに適用されるプロパティーを、組み込むことができます。 前述の例では、プロパティー currencycurrencySymbol を任意の DataItem パーツに指定して、DataItem が通貨値を表していることを示し、値の表示時に使用する通貨記号を指定することができます。「EGL 言語解説書」の『currencySymbol』トピックを見ると、このプロパティーを Web ページで使用する際には有効になり、コンソール・ユーザー・インターフェース・アプリケーションで使用する際には無効になることが分かります。

プロパティー値

それぞれのプロパティーに対して、有効な値を提供する必要があります。プロパティーには、文字列リテラルを受け入れるもの、値 "yes" または "no" を受け入れるもの、列挙 というオプション・リストの値を受け入れるもの、配列リテラルを受け入れるもの、などがあります。ほとんどの場合、プロパティーの値として変数や定数を使うことはできません。つまり、currency プロパティーの値として、ブール変数やストリング変数で "yes" または "no" を設定することはできず、リテラル (つまり、値 "yes" または "no" の引用符を外したもの) を指定しなければなりません。

ただし、変数またはパーツの名前を値として入力する必要があるプロパティーも、いくつかあります。この場合、プロパティーは変数またはパーツの値を使用するのではなく、 変数またはパーツ自体を参照することになります。例えば、JSF ハンドラー・パーツは onPreRenderFunction プロパティーを受け入れます。 このプロパティーは、ハンドラーの実行時に必ず自動的に実行される、ハンドラー内の関数を指定します。この場合、ハンドラーを以下のように記述できます。
handler myPage type JSFHandler
    {onPreRenderFunction = refreshFunction}

    function refreshFunction()
    end

end
この例では、onPreRenderFunction が、refreshFunction 関数の名前に指定されています。 この名前を持つ関数が、ハンドラーになければなりません。もしない場合は、EGL は検証エラーをスローします。

プロパティーの中には、前のバージョンまたは移行されたコードとの互換性を確保するために提供されているものがあります。これらは、新規 EGL アプリケーションでは不要となります。新規コード用に提供されているプロパティーと、互換性の確保用に提供されているプロパティーを識別するには、「EGL 言語解説書」のトピックで、特定のパーツとそのプロパティーについて説明しているものを参照してください。

プロパティーの継承と指定変更

別のパーツに基づいてパーツを作成すると、新しく作られたパーツは古いパーツのプロパティーを継承します。
DataItem myRedVar int {color = red} end

Record myRedRecord type BasicRecord
    myField myRedVar;
end
この場合、フィールド myField の振る舞いは、 このフィールドに color プロパティーを指定したかのようになります。
しかし、ほとんどの変数間では、プロパティーの転送は行われません。次の例を参照してください。
myRedInt int {color = red};
myBlueInt int {color = blue};
myBlueInt = myRedInt;
この場合、myBlueIntcolor プロパティーは、blue に設定されたままになります。

参照変数は、プロパティー転送に対する例外です。「EGL 言語解説書」の『プロパティー』を参照してください。

次の例のように、プロパティーを明示的に指定変更できます。
DataItem myRedVar int {color = red} end

Record myBlueRecord type BasicRecord
    myField myRedVar {color = blue};
end
ここでは、フィールド myField によって、 値 red が値 blue に指定変更されています。
このように、1 つのパーツまたは変数に対してプロパティーを 2 度指定することは、規則上問題はありませんが、お勧めはできません。最新のプロパティー指定では、次の例のように値を設定します。
myBlueVar int {color = red, color = blue};
この場合、2 番目の定義が最初の定義を指定変更するため、変数の color プロパティーは blue に設定されます。

フィードバック