ステップ3. ルーチンを追加してEMPLOYEE_CHANGEDイベントをリスンする

Visual LANSA

ステップ3. ルーチンを追加してEMPLOYEE_CHANGEDイベントをリスンする


このステップでは、社員フィルターにイベント・ルーチンを追加して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

   

通知されたイベントとしてこのイベント・ルーチンで処理されるイベントのいずれか1つと一致するEventIDが、このイベント・ルーチンを配置したコンポーネントには適用されないことをテストで確認することが重要です。

 

5.    次に、このコンポーネントに適用される各種イベントIDを処理するための適切なWHEN VALUE_ISコマンドを指定します。ここでは、EMPLOYEE_CHANGEDイベントのみを処理します。

 

When (= EMPLOYEE_CHANGED)

 

コードは、次のようになります。

 

6.    次に、上書きされた現在のキー値を保存するコードを追加します。

 

Inz_List #Save_Keys 1

 

 

7.    通知イベントによって渡される値をEMPNOフィールドに割り当てます。

 

#EmpNo := #AInfo1

 

 

8.    インスタンス・リストの更新を開始します。

 

Invoke Method(#avListManager.BeginListUpdate)

 

 

9.    更新された社員の詳細を取得します。

 

FETCH FIELDS(#SURNAME #GIVENAME #EMPNO #SALARY) FROM_FILE(PSLMST) WITH_KEY(#EMPNO)

 

 

10.    インスタンス・リストのエントリーを更新します。

 

Use Builtin(BCONCAT) With_Args(#GIVENAME #SURNAME) To_Get(#FULLNAME)

Invoke #avListManager.AddtoList Visualid1(#EMPNO) Visualid2(#FULLNAME) NColumn1(#SALARY) AKey1(#EMPNO)

 

11.    インスタンス・リストの更新を完了します。

 

Invoke Method(#avListManager.EndListUpdate)

 

 

12.    最後に、保存したキー値に戻します。

 

Get_Entry 1 #Save_Keys

 

 

完成したコードは、次のようになります。


  

13.    フィルターをコンパイルします。