コンテキスト変数

完了

コンテキスト変数はグローバル変数に似ていますが、作成した画面でのみ参照される点が異なります。 アプリ全体で参照する変数にユーザーの名前を設定することはできますが、コンテキスト変数を他の画面で使用できないという利点があります。

変数駆動型の機能を複数の画面で使用することがあります。 たとえば、レコードの削除などを確定するためのポップアップ ダイアログ ボックスがさまざまなアプリで使用されています。 実装する一般的な方法は、ユーザーが削除ボタンを選択したとき、コンテキスト変数を true に設定することです。 これを行うには、ボタンの OnSelect プロパティを次に設定します。

UpdateContext({varShowPopUp: true})

次に、ポップアップ コントロールの Visible プロパティを varShowPopUp に設定します。 これはグローバル変数の例と似ています。 主な違いは再利用性です。 (Ctrl + C キーを使用して) コントロールを別の画面にコピーすると、 varShowPopUp のインスタンスが 2 つあります。 この 2 つのインスタンスで同じ名前が使用されますが、値が異なります。 screen1 の varShowPopUp の値は、画面 2 の varShowPopUp の値には影響しません。各コンテキスト変数は、同じ名前を持つ場合でも、画面上のスコープが設定されるためです。

通常、変数名を再利用することは、混乱を招く可能性があるためお勧めしませんが、異なる画面で機能を個別に再利用する場合に便利です。

グローバル変数を使うべきか、コンテキスト変数を使うべきかわからない場合、通常、グローバル変数が推奨されます。 グローバル変数はどこでも使え、柔軟性が最も高いためです。

UpdateContext 関数の独特の動作の 1 つは、複数の変数を一度に宣言できるということです。 これは Set 関数では実行できません。 1 つの式で複数のコンテキスト変数を作成するには、変数の間にコンマを使用します。

UpdateContext({varCount: 1, varActive: true, varName: User().FullName})

Note

前のモジュールでは、User() 関数をインラインで使用すると、アプリの速度が不必要に低下するため、グローバル変数 OnStart を使用する必要があることを説明しました。 コンテキスト変数を使用してユーザー情報を格納すると、User() 関数のインライン使用よりもパフォーマンスが向上しますが、ページが開くたびにデータ ソースを呼び出すので、最終的にはグローバル変数よりもパフォーマンスが低下します。 そのため、グローバル変数にユーザー情報を格納することをお勧めします。

グローバル変数で同じことを行うには、次を使用します。

Set(varCount, 1);Set(varActive, true);Set(varName, User().FullName)

次のユニットでは、コレクション変数にデータのテーブルを格納する方法について説明します。