コンテキスト変数

完了

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

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

UpdateContext({varShowPopUp: true})

次に、ポップアップ コントロールの Visible プロパティを varShowPopUp に設定します。 これはグローバル変数の例と似ています。 主な違いは再利用性です。 (Ctrl+C で) コントロールを別の画面にコピーする場合、varShowPopUp のインスタンスが 2 つ与えられます。 この 2 つのインスタンスで同じ名前が使用されますが、値が異なります。 画面 1 の 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)

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