ステップ2. ミニ・フィルターのコードを記述する

Visual LANSA

ステップ2. ミニ・フィルターのコードを記述する


このステップでは、ミニ・フィルターのコードを記述します。ミニ・フィルターにはコード ウィザードがないので、フィルターのコードを手動で記述する必要があります。

1.    フィルターの[ソース]タブを表示します。

2.    次のステートメントをコンポーネントの定義の後に追加します。

Def_List Name(#Save_Keys) Fields(#SURNAME) Type(*Working) Entrys(1)

  

Save_Keys作業リストが、selectループによって上書きされたキー値を保存するのに使用されます。

 

3.    次にuInitializeメソッド・ルーチンを追加します。

Mthroutine Name(uInitialize) Options(*Redefine)

 

#COM_OWNER.avMiniFilter := true

#COM_OWNER.avMiniFilterpanel <= #PANL_1

 

Endroutine

 

·         フィルターやコマンド・ハンドラーが作成されると、uInitializeメソッド・ルーチンが1度だけ実行されます。

·         avMiniFilterプロパティはフィルターがミニ・フィルターである必要があることを示します。

·         avMinifilterpanelはフィルター内のパネルへの参照を設定します。2つのコンポ―ネント間の文字“<=”は参照を割り当てます。フィルターには複数のパネルを格納できます。また、常に同一のパネルを使用するのではなく、状況に応じて、数あるミニ・フィルター・パネルの中から1つを選んで使用します。

  

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

 

4.    次に、SURNAMEフィールドのKeyPressイベントを処理するイベント・ルーチンを追加します。Enterキーを押すと、このイベントが実行されます。

EVTROUTINE HANDLING(#SURNAME.KeyPress) OPTIONS(*NOCLEARERRORS *NOCLEARMESSAGES) KeyCode(#keycode)

if ('#keycode.value = Enter')

 

endif

ENDROUTINE

 

5.    Enterキーを押すと、selectループによって上書きされた現在のキー値が保存されます。

 

Inz_List #Save_Keys 1

 

 

6.    インスタンス・リストの更新がまもなく開始され、チェックボックスが選択されている場合にはその後インスタンス・リストがクリアされることを指定します。

Invoke #avListManager.BeginListUpdate

 

If '#Clear_List.ButtonState = Checked'

Invoke #avListManager.ClearList

Endif

  

7.    次に、検索条件に一致する社員を選択し、ビジュアル識別子を設定します。その後、エントリーをインスタンス・リストに追加します。

Select Fields(#EMPNO #SURNAME #GIVENAME #SALARY) From_File(PSLMST2) With_key(#SURNAME) Generic(*yes) Nbr_Keys(*Compute)

 

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

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

 

EndSelect

 

8.  最後に、インスタンス・リストの更新が完了したことを示し、保存済みのキー値を復元します。

Invoke #avListManager.EndListUpdate

Get_Entry 1 #Save_Keys

 

完成したイベント・ルーチンは、次のようになります。


 

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