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

  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

    • フィルターやコマンド・ハンドラーが作成されると、uInitialize メソッド・ルーチンが1度だけ実行されます。
    • avMiniFilter プロパティはフィルターがミニ・フィルターである必要があることを示します。
    • avMinifilterpanel はフィルター内のパネルへの参照を設定します。2つのコンポ―ネント間の文字 "<=" は参照を割り当てます。フィルターには複数のパネルを格納できます。また、常に同一のパネルを使用するのではなく、状況に応じて、数あるミニ・フィルター・パネルの中から1つを選んで使用します。

      これで、コードは以下のようになります。



  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. フィルターをコンパイルします。
  • No labels