このステップでは、社員フィルターにイベント・ルーチンを追加して EMPLOYEE_CHANGED イベントをリッスンします。
1. 社員フィルター iiiCOM07 を探して開きます。
2. [ソース] タブを表示します。
3. avEvent シグナルをリッスンするイベント・ルーチンを追加します。
Evtroutine Handling(#Com_Owner.avEvent) WithId(#EventId) Options(*NOCLEARMESSAGES *NOCLEARERRORS) WithAinfo1(#Ainfo1)
Endroutine
この avEvent イベントは、avSignalEvent メソッドが呼び出されると、フレームワークによって通知されるイベントです。 このイベント・ルーチンは通知されるイベントを、イベントと共に通知される英数字または数値データと合わせて受信します。
4. 次に、CASE コマンドを追加してどのイベントが通知されたのかをイベント・ルーチン内でテストします。
Case #EventId.Value
EndCase
通知されたイベントがこのイベント・ルーチンのあるコンポーネントに当てはまらない場合があるので、EventID がこのイベント・ルーチンで処理されるイベントのいずれかと一致することをテストで確認することが重要です。
5. 次に、このコンポーネントに適用される各種イベント ID を処理するための適切な WHEN VALUE_IS コマンドを指定します。 ここでは、EMPLOYEE_CHANGEDイベントのみを処理します。
When (= EMPLOYEE_CHANGED)
これで、コードは以下のようになります。
6. 次に、上書きされた現在のキー値を保存するコードを追加します。
Inz_List #Save_Keys 1
7. 通知イベントによって渡される値を EMPNO フィールドに割り当てます。
#xEmployeeIdentification := #Ainfo1
8. インスタンスリストの更新を開始します。
Invoke Method(#avListManager.BeginListUpdate)
9. 更新された社員の詳細を取得します。
Fetch Fields(#xEmployeeSurname) From_File(XEMPLOYEE) With_Key(#xEmployeeIdentification)
10. インスタンスリストのエントリーを更新します。
Invoke Method(#avListManager.AddtoList) Visualid1(#xEmployeeIdentification) Visualid2(#xEmployeeSurname) Akey1(#xEmployeeIdentification)
11. インスタンスリストの更新を完了します。
Invoke Method(#avListManager.EndListUpdate)
完成したコードは、次のようになります。
12. フィルターをコンパイルします。