このステップでは、ミニ・フィルターのコードを記述します。ミニ・フィルターにはコード ウィザードがないので、フィルターのコードを手動で記述する必要があります。
1. このフィルターの [ソース] タブを表示します。
2. 次のステートメントをコンポーネントの定義の後に追加します。
Def_List Name(#Save_Keys) Fields(#xEmployeeSurname) Type(*Working) Entrys(1)
Save_Keys 作業リストが、select ループによって上書きされたキー値を保存するのに使用されます。
3. 次に uInitialize メソッド・ルーチンを追加します。
Mthroutine Name(uInitialize) Options(*Redefine)
#COM_OWNER.avMiniFilter := true
#COM_OWNER.avMiniFilterpanel <= #PANEL1
Endroutine
これで、コードは以下のようになります。
4. 次に、xEmployeeSurname フィールドの KeyPress イベントを処理するイベント・ルーチンを追加します。このイベントは、Enter キーが押されると実行されます。
Evtroutine Handling(#xEmployeeSurname.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(#xEmployeeIdentification #xEmployeeSurname) From_File(XEMPLOYEE2) With_Key(#xEmployeeSurname) Nbr_Keys(*Compute) Generic(*yes)
Invoke Method(#avListManager.AddtoList) Visualid1(#xEmployeeIdentification) Visualid2(#xEmployeeSurname) Akey1(#xEmployeeIdentification)
Endselect
8. 最後に、インスタンスリストの更新が完了したことを示し、保存済みのキー値を復元します。
Invoke #avListManager.EndListUpdate
Get_Entry 1 #Save_Keys
完成したイベント・ルーチンは、次のようになります。
9. フィルターをコンパイルします。