のステップでは、"部門"のコマンド・ハンドラーにロジックを追加して、"社員"ビジネス・オブジェクトの詳細コマンド・ハンドラーに選択した社員の詳細を表示します。
社員の詳細コマンド・ハンドラーへの切り替えは、ボタンのクリック・イベントで実行されます。
- 詳細コマンド・ハンドラーの [デザイン] タブを表示します。
- プッシュ・ボタンを [コントロール] タブからコマンド・ハンドラーの右側パネル (PANL_1) にドラッグします。
- [レイアウト] リボンを使って、このボタンの [配置] を [中央上] にします。上の余白を 10 にします。
- ボタンのキャプションを詳細にします。
- ボタンに Click イベントを作成します。
- クリック・イベントに、"社員" ビジネス・オブジェクトの詳細コマンド・ハンドラーに切り替えるステートメントを追加します。
#avframeworkmanager.avSwitch To(BUSINESSOBJECT) NAMED(EMPLOYEES) EXECUTE(DETAILS) Caller(#com_owner) ClearInstanceList(TRUE)
- To パラメータには、ビジネス・オブジェクトへの切り替えであることを示す BUSINESSOBJECT が含まれています(フレームワークまたはアプリケーションに切り替えることもできます)。
- NAMED パラメータには、実際のビジネス・オブジェクト名が含まれている必要があります。
- EXECUTE パラメータには、実行するコマンドの名前が含まれている必要があります。
- ClearInstancList パラメータを指定すると、オプションでインスタンスリストをクリアできます。
- 次に、グリッド内の社員の値に基づいて表示するインスタンスを "社員" ビジネス・オブジェクトに伝えるイベント・ルーチンを追加します。
Evtroutine Handling(#avFrameworkManager.avAddSwitchInstances) Options(*NOCLEARERRORS *NOCLEARMESSAGES) Caller(#Caller)
* Make sure the caller is this component
If_Ref Com(#Caller) Is_Not(*Equal_to #Com_Owner)
Return
Endif
Invoke Method(#avFrameworkManager.avAddSwitchInstance) Businessobjecttype(EMPLOYEES) Visualid1(#xEmployeeIdentification) Visualid2(#xEmployeeSurname.AsNativeString)
Akey1(#xEmployeeIdentification)
Endroutine- avAddSwitchInstances イベント・ルーチンは、常に、avSwitch メソッドを使用して切り替えを実行した直後に実行されます。 このイベントを使用すると、対象のビジネス・オブジェクトのインスタントリストに配置されるデータを制御することができます。
- このイベントを通知するコンポーネントが Caller パラメータに渡されます。このイベントを通知するコンポーネントがそのコンポーネント自体である場合は、このイベントでのみコードを実行することが重要です。 ですから、呼び出し元が #com_owner でない場合は、このイベント・ルーチンから戻る必要があります。 #Caller および #Com_Owner を比較するのに is_not(*Equal_to がどのように使用されているのかに注意してください。 単純な文字列ではなく、コンポーネント自体を比較しているので、この構文を使用する必要があります。
- avAddSwitchInstance メソッドは対象のインスタンスリストに追加するデータを指定します。
- 必要であれば、avAddSwitchInstance メソッドを繰り返し呼び出すことで、複数のエントリーを対象のビジネス・オブジェクトのインスタンスリストに配置することができます。
- "社員" ビジネス・オブジェクトの [識別子] タブで、ユーザー・オブジェクト タイプが EMPLOYEES であることを確認してください。そうでない場合はこの切り替えが作動しません。
コードは、次のようになります。
- コマンド・ハンドラーをコンパイルします。
- 切り替えをテストします。1 人の社員を選択し、詳細コマンド・ハンドラーで [詳細] ボタンをクリックすると、選択した社員の詳細とともに社員ビジネス・オブジェクトが表示されます。


