コンテキスト変数

完了

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

変数駆動型の複数の画面で使用する機能がある場合があります。 たとえば、多くのアプリでは、ポップアップ ダイアログ ボックスを使用して、レコードの削除などを確認します。 実装する一般的な方法は、ユーザーが削除ボタンを選択したときにコンテキスト変数を 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})

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

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

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

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