ステップ3. Sectionsビジネス・オブジェクトからEmployeesビジネス・オブジェクトに切り替えるためのロジックを追加する
このステップでは、Sectionsの詳細コマンド・ハンドラーにロジックを追加して、Employeesビジネス・オブジェクトの詳細コマンド・ハンドラーに選択した社員の詳細を表示します。
Employeesの詳細コマンド・ハンドラーへの切り替えは、ボタン・クリック・イベントで実行します。
1. 詳細コマンド・ハンドラーの[デザイン]タブを表示します。
2. プッシュ・ボタンを[共通の制御]タブからコマンド・ハンドラーの右側パネル(PANL_1)にドラッグします。
3. ボタンのキャプションを[詳細]にします。
4. ボタンにクリック・イベントを追加します。
5. クリック・イベントに、Employeesビジネス・オブジェクトの詳細コマンド・ハンドラーに切り替えるステートメントを追加します。
#avframeworkmanager.avSwitch To(BUSINESSOBJECT) NAMED(EMPLOYEES) EXECUTE(DETAILS) Caller(#com_owner) ClearInstanceList(TRUE)
· Toパラメータには、ビジネス・オブジェクトへの切り替えであることを示すBUSINESSOBJECTが含まれています(フレームワークまたはアプリケーションに切り替えることもできます)。
· NAMEDパラメータには、実際のビジネス・オブジェクト名が含まれている必要があります。
· EXECUTEパラメータには、実行するコマンドの名前が含まれている必要があります。
· ClearInstancListパラメータを指定すると、オプションでインスタンス・リストをクリアできます。
6. 次に、グリッドの社員の値に基づいて表示するインスタンスをEmployeesビジネス・オブジェクトに指定する次のイベント・ルーチンを追加します。
Evtroutine Handling(#avFrameworkManager.avAddSwitchInstances) Caller(#Caller) Options(*NOCLEARERRORS *NOCLEARMESSAGES)
* Make sure the caller is this component
If_ref #Caller is_not(*Equal_to #Com_Owner)
Return
Endif
Invoke Method(#avFrameworkManager.avAddSwitchInstance) BusinessObjectType(EMPLOYEES) Visualid1(#EMPNO) Visualid2(#SURNAME) Akey1(#EMPNO)
Endroutine
· avAddSwitchInstancesイベント・ルーチンは、常に、avSwitchメソッドを使用して切り替えを実行した直後に実行されます。このイベントを使用すると、対象のビジネス・オブジェクトのインスタンス・リストに配置されるデータを制御することができます。このイベントを通知するコンポーネントがCallerパラメータに渡されます。
· このイベントを通知したコンポーネントがそのコンポーネント自体である場合は、このイベントでコードを実行することだけが重要です。したがって、呼び出し元が#com_ownerでない場合は、このイベント・ルーチンから戻る必要があります。#Callerおよび#Com_Ownerを比較するのにis_not(*Equal_toがどのように使用されているのかに注意してください。単純な文字列ではなく、コンポーネント自体を比較していることから、この構文を使用する必要があります。
· avAddSwitchInstanceメソッドは対象のインスタンス・リストに追加するデータを指定します。
· avAddSwitchInstanceメソッドを繰り返し呼び出して、複数のエントリーを対象のビジネス・オブジェクトのインスタンス・リストに配置するとができます。
コードは、次のようになります。
7. コマンド・ハンドラーをコンパイルします。
8. 切り替えをテストします。Sectionsの詳細コマンド・ハンドラーで社員を選択して[詳細]ボタンをクリックすると、選択した社員の詳細を含むEmployeesビジネス・オブジェクトが表示されます。