| ネイティブ モバイル アプリケーションのクライアント側のイベント | |
クライアントイベントにより、開発者は、動作やロジックをアプリケーションに追加して、クライアント側とサーバー側の実行を組み合わせることができます。「ネイティブ モバイル アプリケーションのイベント」で説明したように、Start、Refresh、および Load は、完全にサーバー上で実行されるサーバーイベントです。つまり、これらのイベントではデバイスのリソースを使用できません。クライアントイベントでは、サーバーの機能とデバイスのリソースを組み合わせることができます。
クライアント側のイベントで複数のアクションを連結したい場合は、Composite コマンドを使用する必要があります。
ClientStart イベントは、ユーザーとのやり取りなしでデバイス上で最初に実行されるイベントです。サーバー側の Start イベントよりも先に実行されます。このイベントは、初期画面 (UI や変数など) を初期化する目的で使用します。
Navigation.Start イベントは、ClientStart イベントの直後に実行され、ナビゲーションスタイルに関する側面 (アプリケーションに Slide ナビゲーションがある場合のメインパネルの呼び出しなど) を初期化する目的で使用します。
Back イベントは、エンドユーザーによる [ 戻る ] ボタンのクリック (Android の場合) または戻る操作の実行 (iOS の場合) をキャプチャーする目的で使用します。
これらのイベントは、ユーザーとのやり取りに対するアプリケーションのプログラム的な応答です。こうしたやり取りはアクションと呼ばれ、画面上のボタン、画像、またはその他のコントロールの形で見ることができます。ロングタップ (長押し) などの操作により、アクションに関連付けられたイベントを実行します。ほかにも、特殊なケースやユーザーとのやり取りなしで実行される事前定義済みのイベントもあります。
イベントには主に 2 つのタイプ、user と control があります。どちらのイベントもコントロールに関連付けられます。相違点としては、ユーザーイベントは、開発者が名前を指定し、コントロールそのものに関連付けられます (トリガーはタップ操作になります)。一方、コントロールイベントは、コントロールのタイプに応じて自動的に事前定義されます。トリガーは、イベント自体 (スマートデバイスのタッチイベントの場合、control.LongTap イベントなど) になります。その他の種類のコントロールイベントとしては、control.PageChanged イベント (コントロールが特定のコントロールのタイプのグリッドである場合) や、control.ControlValueChanged イベント (コントロールが読み取り専用の項目属性または変数である場合) などがあります。
エンドユーザーがアクションをトリガーするとどうなるでしょうか。プロシージャーを呼び出す必要がある場合など、サーバーへの通信が必要でない限り、関連付けられたコードはクライアント側 (デバイス内) で実行されます。いずれにしても、Refresh コマンドを通じて明示的に要求された場合を除き、システムイベントは実行されません。
このイベントでは、開発者は次の操作を行うことができます:
- REST Web サービスの呼び出し:
- WorkWith の呼び出し
- 編集
情報を挿入、更新、または削除するには、Work With オブジェクトの Detail ノードを呼び出します:
- WorkWithDevicesObject.levelname.Detail.Delete( primaryKey )
- WorkWithDevicesObject.levelname.Detail.Update( primaryKey )
- WorkWithDevicesObject.levelname.Detail.Insert( &bc )
- 表示
Work With オブジェクトの List または Detail を呼び出します:
- WorkWithDevicesObject.levelname.Detail( primaryKey )
- WorkWithDevicesObject.levelname.List( )
- Panel オブジェクトの呼び出し
- Menu オブジェクトの呼び出し
- Smart Devices API の外部オブジェクトの呼び出し。次に例を示します。
- Msg(&var)
- Confirm (&var)
- Return
- Refresh
- AddressBook.AddContact( ...)
- その他
- Component ドメインを使用した Web Panel オブジェクトの呼び出し。
このアクションを実行すると、Web ナビゲーターによって Web ページが表示され、ナビゲーターのフレームを表示せずに Web パネルがロードされます。ユーザーは必要に応じて元に戻すことができます。
- サブルーチンの呼び出し。
- コマンド:
- コントロールに応じて、コントロールプロパティの割り当てを行います。
開発者がコントロール名に続けてドット (".") を入力すると、このコントロールのすべてのプロパティを示すツールヒントが表示されます。
次に例を示します。
- Control.visible = ...
- Control.class = ...
- 変数の簡単な割り当てを行います。
例:
- &Var = "Test"
- &Var = 123
- &Var = proc.Udp()
- SDT または BC に基づいて使用される変数のエレメントに割り当てます。
例:
- &Var = &SDT.Field
- &BC.item = ...
- 複数選択のあるグリッドで For Each Line および selected line コマンドを実行します。
- If-Else-EndIf、Do-Case、および Do-While コードブロックを使用します。
条件にプロシージャーや外部オブジェクトのメソッドの呼び出しなど複雑なエクスプレッションを使用することはできません。許容されるのは、変数、項目属性、または SDT メンバーを使用し、演算子と標準関数を伴う単純な条件だけです。
注: For Each コマンドはサポートされていません。そのため、このようなイベント内で定義すると、次のエラーメッセージが表示されます: error: Line can't be interpreted by devices.
Grammar of Events on the Client Side and Composite Command
Events in Mobile Applications
|
|
|
|
|