ネイティブ モバイル ジェネレーターで生成されたネイティブ モバイル アプリケーションには、2 種類のイベントがあります:
クライアントイベントおよび
サーバーイベント。
- ネイティブ モバイル アプリケーションでイベントがトリガーされる順序
- デバイス (クライアント) で実行されるイベント
- サーバーで実行されるイベント
- サーバーイベントでできること
- クライアントイベントでできること
ここでは、イベントの管理方法と、優れたネイティブ モバイル アプリケーションを開発するために意識する必要がある制限や機能について検証します。
GeneXus で Web または Windows の開発経験がある場合、(サーバーで実行される)「システムイベント」は既に熟知しているはずです。
Start、
Refresh、および
Load イベントです。
クライアントイベントは開発者によって作成された
ユーザーイベント (必要に応じていくつでも作成できます) を含んでおり、その
コントロールイベントは、フォームや
ClientStart イベント上のコントロールに関連しています。
使用するリソースは変化し、当てはまる制限も変化する可能性があるため、参照するイベントの種類に関係なく、どこでイベントが実行されるのかを把握しておく必要があります。構文の問題によっても違いが生じるため、考慮が必要です。
これらのイベント (Start、Refresh、および Load) では、GeneXus で使用可能なすべてのコマンドを実行できます。
- Start イベントは、Panel オブジェクトまたは Work With for Smart Devices オブジェクトノードがデバイスで最初に開かれたときに実行されます。パネルまたはノードを終了してからもう一度開かない限り、再度実行されることはありません。
- Start イベントの後に、Refresh イベントが実行されます。Start イベントが 1 回だけ実行されるのに対して、Refresh イベントは複数回実行されることがあることに留意してください。加えて、フォームの固定部分のナビゲーションとグリッドのナビゲーションが分離されているため、それぞれに (項目属性が含まれている場合) ベーステーブルがあります。そのため、必要に応じて Refresh イベントは固定部分のベーステーブルにアクセスします。
- Load イベントは、最後に実行されるシステムイベントです。レイアウトにグリッドがある場合にのみ実行されます。グリッドにベーステーブルがある場合、Load イベントは、ベーステーブルのレジスタの数と同じ回数だけ実行されます。グリッドが変数に基づく場合、Load イベントは 1 回だけ実行されます (アイテムのコレクションをループして Load コマンドを呼び出すことができます)。グリッドが SDT 変数に基づく場合、Load イベントは、コントロールの外観 (スタイルクラス、表示の状態、別のグリッド アイテム レイアウトの選択など) をカスタマイズするためにのみ使用できます。
注:
- Refresh コマンドが呼び出されると、Refresh と Load の両方のイベントが実行されます。
- 固定部分とグリッドの両方にベーステーブルがあり、GeneXus がそこに 1 対 N の関係を見つけた場合、Load イベントのレコードは関連するレコードになります。これ以外の場合、Load イベントは関連しません (2 つの独立したナビゲーションとなります。1 つは Refresh、もう 1 つは Load のナビゲーションです)。
- パネルが有効になる (開かれる) か (Refresh コマンドを介して) Refresh イベントが呼び出されない限り、Refresh イベントが実行されるというシナリオはあり得ないということを覚えておいてください。
- 1 つの Panel オブジェクトに含まれるグリッドごとに 1 つずつ、複数の Load イベントが存在することがあります。その場合、イベント名の前にグリッド名を付ける必要があります。次に例を示します: Event Grid1.Load
シナリオの背景で起こることについて「
ネイティブ モバイル アプリケーションのサーバー側のイベント」を参照してください。
多くの Section を持つ Detail の場合「
ネイティブ モバイル アプリケーションでイベントをトリガーする順序」を参照してください。
クライアントイベントとは、ユーザーの対話型操作に対するアプリケーションのプログラムに基づく反応です。このような形の対話型操作は、画面上のボタン、画像、またはその他のコントロールで見られます。
クライアントイベントは、主に 2 種類あります:
ユーザーイベントと
コントロールイベントです。どちらのイベントもコントロールに関連付けられます。
クライアントイベントにより、開発者は、動作およびロジックをアプリケーションに追加して、クライアント側およびサーバー側の実行を組み合わせることができます。
Start、
Refresh、および
Load は、完全にサーバー上で実行されるサーバーイベントです。つまり、これらのイベントではデバイスのリソースを使用できません。
クライアントイベントでは、サーバーの能力とデバイスのリソースを組み合わせることができます。
ユーザーがアクション (クライアントイベント) をトリガーするとどうなるでしょうか。プロシージャーを呼び出す必要がある場合など、サーバーへの通信が必要でない限り、関連付けられたコードはクライアント側 (デバイス内) で実行されます。いずれにしても、Refresh コマンドを通じて明示的に要求された場合を除き、システムイベントは実行されません。
次に、ユーザーイベントでできることを示します。「
ネイティブ モバイル アプリケーションのクライアント側のイベント」を参照してください。
Grammar of Events on the Client Side and Composite Command
Events in Mobile Applications