[Variable] ノード

この変数は、ドメイン、項目属性、SDT、またはビジネスコンポーネントに基づくことができ、または、基本変数として定義することができます。これは、[Data Type] プロパティに依存します。[Basic] の場合は基本変数になり、[Based on] の場合はドメインや項目属性などを選択することを要求されます。

テーブルまたはグリッドを右クリックして、いずれかのオプションを選択します:

[Variable]: [Variable] ノードで直接定義する基本変数を挿入します。

[VariableBasedOn]: 項目属性、ドメイン、SDT、ビジネスコンポーネント (BC)、または外部オブジェクトに基づく変数を挿入します。

(次の画像のように) 任意のテーブル内で [追加] ->[VariableBasedOn] を実行してノードに基づく変数を挿入するとウィンドウが表示され、変数が基づく項目属性、ドメイン、SDT、ビジネスコンポーネントを選択する必要があります:

[Variable] ノードには、次のプロパティがあります:

 

[Name]: 変数の名前です。このプロパティは、フォーム、ルール、およびイベント内で識別するために必要です。
[Description]: 変数のデスクリプションです。[Show description] プロパティが [True] の場合、フォーム内で変数自体の横に表示されるテキストブロックのキャプションを示します。(この図を下記に示します)。

[Invite Message]: エンドユーザーが入力すべき内容を説明するために変数のフィールドに表示されるメッセージを指定します。エンドユーザーが変数に何かを記入し始めると、メッセージは消えます。ナレッジベースの [Document type] プロパティが HTML 5 の場合にのみサポートされます。

例:


[Right Text]: このプロパティが空ではない場合、同じセル内で変数の横に挿入されるラベルを示します。このラベルに割り当てられるテーマは、[WorkWithPlus Settings] ->[Theme] ノード内の [Att/Var Right text] プロパティから適用されます。このプロパティの例は、[Attribute] ノードの同じプロパティに表示されます。 
[Help Text]: マウスポインターまたはカーソルが変数のフィールドの上、そのデスクリプションの上、または変数の横のヘルプアイコンの上に位置している場合にツールチップとして表示される説明を指定します (メインの構成によって異なります)。

たとえば、値の上にツールチップを表示するように設定されていて、次の画像が [Last Name] 変数を含んでいる場合、ツールチップが次のように表示されます:

この機能の詳細については、次を参照してください: 項目属性および変数のツールチップヘルプ  

[Read Only]: 変数が読み取り専用かどうかを指定します。変数をトランザクション内に挿入する場合は、Accept(<ATT>) ルールが追加されますが、そうでない場合はフォーム内に直接 [ReadOnly] プロパティが設定されます。

[Is required]: 追加された Web フォームで変数が必要とされるかどうかを指定します。変数が必要とされる場合、特別なテーマクラスが割り当てられ、この変数に値があるかどうかの検証が行われます。

[Required Themes Assignation] プロパティに応じて、変数が設定で定義されたテーマクラスを割り当てるか、またはこれが変数自体に定義されたテーマクラスの接頭語として機能するかが決まります。

ここで、必要なすべての変数の値をチェックするために自動的に追加されたサブルーチンを表示できます:

次に、変数 &が [True] の場合のみ、必要なすべての変数に値があるかどうかをチェックしたいアクションで、このサブルーチンを呼び出して、チェックします:

[Is required extra condition]: [Is required] プロパティが True に設定されている場合、変数が必要となるタイミングを指定する条件を設定できます。

たとえば、PersonCellNumber が空のときに PersonHomeTelNumber の入力を必須にしたい場合、次のような条件を追加します:

その後、CheckRequiredFields サブルーチンを前述の説明と同じように使用します。

[Is required error message]: エンドユーザーがフィールドを空のままにした場合に表示されるメッセージを指定します。値を <default>にすると、[WorkWithPlus Settings] à [Labels] à [Required Attribute] から (項目属性の [Description] を使用して) メッセージが取得されます。プロパティの値が [! で始まり !] で終わる場合は、値をルールに挿入するときにメッセージが ""(二重引用符) で囲まれることがないため、変数とプロシージャーをエラーメッセージに含めることができます。次に例を示します:

プロパティの値: [!"Home Telephone Number ("+ &Pgmname + ") の入力は必須です"!] である場合は、次のメッセージが Sub 'CheckRequiredFields'に挿入されます:

If &PersonHomeTelNumber.IsEmpty()

  msg("Home Telephone Number ("+ &Pgmname + ") の入力は必須です")

Endif

プロパティの値: Home Telephone Number の入力は必須です である場合は、次のメッセージが Sub 'CheckRequiredFields'に挿入されます: 

If &PersonHomeTelNumber.IsEmpty()

  msg("Home Telephone Number の入力は必須です")

Endif

[Type Definition]: このカテゴリ内部のプロパティは、変数のタイプを参照します。

[Data Type]: 変数が基本タイプを持つ (値が Basic) か、または項目属性、ドメイン、SDT、またはビジネスコンポーネントに基づく (値が Based on) かを指定します。

[Data Type] プロパティの値に応じて、一部のプロパティが自動的に表示されたり非表示になったりします。

[Type Definition]: [Based on]

[Domain/Attribute/SDT]: 変数が基づくドメイン、項目属性、SDT、またはビジネスコンポーネントを指定します。このプロパティは、生成されたオブジェクト内で変数を定義するために必要です ([Transaction]、[Selection]、[View] など)。
[Field Specifier (SDT Item)]: この変数が表すフィールド指定子を定義します。SDT にのみ適用されます。たとえば、Id、Name、Description の 3 つのエレメントを含む SDT があり、この SDT に基づいて変数を作成する場合、フォーム上に表示できるように、SDT の各エレメントの 3 つの変数を持つことができます。 

[Type Definition]: [Basic]

[Type]: 変数のタイプを指定します。GeneXus で使用できるタイプのほとんどがこのプロパティでサポートされています:

選択したタイプに応じて、その他のプロパティが表示されます。たとえば、Numeric タイプを選択すると、小数点以下の桁数を定義するオプションがあり、Varchar を選択すると、その長さを指定できます。

[Form]

[Theme class]: 変数のテーマクラスです。
[Description Theme class]: 変数のデスクリプションのテーマクラスです (変数自体の横に表示されるテキストブロックです)。次の例では、変数が PersonId であり、そのデスクリプションは「Id」です。このプロパティは、Id のテーマクラスを参照します。
[Visible]: 変数が画面上に表示されるかどうかを指定します。

たとえば、Person トランザクションの上部の変数に次のプロパティを設定します:

結果は次のとおりです:

 

[Visible Condition]: 条件を満たした場合にのみ変数を表示するための条件を指定します。

たとえば、対象者が Female の場合にのみ &PersonHairStyle 変数を表示したい場合、次のような条件を指定します:

 

これによって、Gender 変数で Male が選択された場合、Hair Style は表示されなくなります:

Female を選択すると、Hair Style が表示されます:

[Control Info]: このカテゴリ内部のプロパティは、変数のコントロールタイプを参照します。

[Control Info]: 変数がドメイン/項目属性などに基づく特定のコントロールタイプを持つか、またはカスタマイズして定義されるかを指定します。このプロパティを既定値 (Based on) のままにして [Control Info based on] プロパティの値を空にすると、変数のコントロールタイプは、その定義と同じになります。

[Control Info] プロパティの値に応じて、一部のプロパティが自動的に表示されたり非表示になったりします。

[Control Info]: [Based on]

[Control info based on]: 変数のコントロール情報が基づくドメインまたは項目属性を指定します。
[Conditions (Dynamic controls)]: コントロールに追加される条件を指定します (コントロールが [Dynamic Combo]、[Listbox]、または [Suggest] の場合のみ)。

[Control Info]: [Custom]

[Control Type]: 変数のコントロールタイプを指定します。

GeneXus がコントロールタイプとして許可するオプションのほとんどがこのプロパティでサポートされています:

選択したコントロールタイプに応じて、ほかのプロパティが表示されます。たとえば、コントロールタイプが [Combo Box] の場合、[Values] および [Empty Item] プロパティが表示されます。

[Control Type] プロパティが [DVelop Combo] の場合、WorkWithPlus で拡張コンボボックスのユーザーコントロールが使用されます。この機能の詳細については、次のリンクを参照してください: Extended Combo

[Custom Properties]

[Custom Properties]: [Variable] ノード内で利用できない特定のプロパティを変数に割り当てることができます。いくつかの例でのみ、これが使用される必要があります。詳細情報: [Custom Properties]

[Advanced Security]: このカテゴリ内のプロパティは、アプリケーションが高度なセキュリティを備えているか、GAM セキュリティと統合されている場合にのみ表示されます。

[Show/Hide Security Functionality Key]:変数が一部のロールで表示可能かどうかを定義する、変数が持つ権限の名前を指定します。値が空の場合は、このオブジェクト内の項目属性に Show/Hide Security は追加されません。

[Edit/ReadOnly Security Functionality Key] を変更し、実行中のアプリケーションに変更を反映する場合は必ず、有効にしている Security に応じて「セキュリティ機能の更新 (高度なセキュリティ)」または「セキュリティ機能の更新 (GAM + WorkWithPlus)」の手順を実行してください:

次に、アプリケーション全体のセキュリティ設定と同様に、管理者は実行中に項目属性のセキュリティを各ロールに対して設定します (オブジェクトのセキュリティ、トランザクションのモードなど)。

[Location in father table] プロパティの詳細については、次のリンクを参照してください:Location in father table - 詳細 < 

変数に基づく SDT の使用の例を次に示します:

ユーザーが一部のフィルタに値を挿入し、[Generate Report] を押して、この Web パネルによってすべてのフィルタを受け取るプロシージャーが呼び出され、Web フォーム内にユーザーが追加したフィルタが考慮された正確な情報を含む PDF レポートが生成されるとします。この場合、開発者は、すべてのフィルタが含まれた SDT を作成して、これらを画面上に配置し、パラメーターによってこの変数をプロシージャーに送信します。開発者が、プロシージャーのパラメータールールを変更する必要がなく、SDT 定義を変更して画面上に新しいプロパティを配置するだけの新しいフィルタが必要な場合に便利です。また、このソリューションでは、開発者がフィルタの値を事前にロードする必要がある場合、SDT 値をロードするか、または事前にロードするだけです。この例を次に示します:

また、ユーザーが必要なすべてのフィルタを挿入すると ([Gender] に [Female]、[Company Name] に [DV])、[Generate Report] をクリックすることで、アプリケーションによってレポートが呼び出されます。

これを実行するには、必要なフィルタを含む SDT を作成します:

次に、EmptyWithTitle テンプレートに基づく Web パネルを作成し、ReportPerson オブジェクトに呼び出しを行う「Generate」と名付けられたユーザーアクションを挿入します ([GXObject] プロパティを ReportPerson に設定します):

次に、変数を挿入して、SDTPerson に基づくことを選択すると、SDTPerson のプロパティから変数として挿入したいものを選択する画面がパターンによって表示されます:

SDT にコレクションが含まれる場合、パターンではこの種の変数 (コレクションである SDT のプロパティ、またはサブレベルに属するプロパティ) がサポートされないため考慮されません。すべてのオプションを選択し、[OK] を押します:

最後にイベントを開いて、この操作がどのくらい簡単なのかを示します:

また、次の画像が示すように、SDT コレクションを追加することもできます。