ステップ3. ルーチンを追加してEMPLOYEE_CHANGEDイベントをリスンする
このステップでは、Employeesフィルターを変更してEMPLOYEE_CHANGEDイベントをリスンします。
1. EmployeesフィルターiiiCOM04を探して開きます。
2. [ソース]タブを表示します。
3. EMPLOYEE_CHANGEDイベントをUHandleEvent webroutineで登録します。
Invoke Method(#avFrameworkManager.avRegisterEvent) Named(EMPLOYEE_CHANGED) Signalaswamevent(2)
UHandleEventは、次のようになります。
4. WAMソースの最後までスクロールし、EMPLOYEE_CHANGEDイベント・シグナルをリスンするイベント・ルーチンを追加します。
Evtroutine Handling(#avFrameworkManager.uWAMEvent_2) Withid(#eventid) WithAinfo1(#Ainfo1) Options(*noclearmessages *noclearerrors)
Endroutine
5. イベント・ルーチンで、最初にコードを追加してイベントIDを確認します。
If '#EventId.Value = EMPLOYEE_CHANGED'
Endif
6. selectループによって実行された上書きから現在のキー値を保存します。
Inz_List #Save_Keys 1
7. 通知イベントによって渡される値をEMPNOフィールドに割り当てます。
#EmpNo := #AInfo1
8. インスタンス・リストの更新を開始します。
Invoke Method(#avListManager.BeginListUpdate)
9. 更新された社員の詳細を取得します。
FETCH FIELDS(#SURNAME #GIVENAME #EMPNO) FROM_FILE(PSLMST) WITH_KEY(#EMPNO)
10. インスタンス・リストのエントリーを更新します。
Use Builtin(BCONCAT) With_Args(#SURNAME #GIVENAME) To_Get(#FULLNAME)
Invoke #avListManager.AddtoList Visualid1(#EMPNO) Visualid2(#FULLNAME) AKey1(#EMPNO)
11. インスタンス・リストの更新を完了します。
Invoke Method(#avListManager.EndListUpdate)
12. 最後に、保存したキー値に戻します。
Get_Entry 1 #Save_Keys
完成したコードは、次のようになります。
13. フィルターをコンパイルしてチェックインします。