Visual LANSA フレームワーク ガイド > フレームワーク・プログラミング > 上級フィルター・スタイル > ミニ・フィルター > サンプル・コード > Windows ミニ・フィルター用 RDML
Windows ミニ・フィルター用 RDML

================================================================================
* タイプ            :FILTER
* 祖先             :VF_AC007
* アプリケーション       :プログラミング・テクニック (上級)
* ビジネス・オブジェクト:ミニ・フィルター (簡素)
* フィルター          : ミニ・フィルター (簡素)
* 注:このフィルターはこのビジネス・オブジェクト専用でなければいけません
* ================================================================================

Begin_Com Role(*EXTENDS #VF_AC007) Height(138) Width(303)
* =============================================================================
* コンポーネント定義
* =============================================================================

* このフィルターは何も表示しません。
* このフレームワー・ミニフィルターは検索ボタンに検索フィールドを提供します。
* このフィルターは、フレームワークの識別バーにあるミニ・フィルターと通信します。
* この通信は、avMiniFiltField1 のようなプロパティや、再定義されたメソッド・ルーチン uMiniFilterButton
* を使って行われます。

* =============================================================================
* メソッド・ルーチン再定義
* =============================================================================

*
* 初期化
*

Mthroutine Name(uInitialize) Options(*REDEFINE)

* ミニ・フィルターをこのビジネス・オブジェクト用に表示させます。
* 注:このフィルターはこのビジネス・オブジェクト専用でなければいけません
set #Com_Owner avMiniFilter(TRUE)

* このミニ・フィルターで1つの検索フィールドと1つの検索ボタンが使用できるようにします。
* 必要に応じて、キャプションや幅を指定してください。

set #Com_Owner avMiniFiltField1(TRUE)
* フィールド全体の幅  (キャプション含む) を 300に設定
set #Com_Owner avMiniFiltFldWid1(300)

set #Com_Owner avMiniFiltFldCap1(*MTXTDF_SURNAME)
* キャプション幅を 200 に設定
set #Com_Owner avMiniFiltFldCapWid1(200)

set #Com_Owner avMiniFiltButton1(TRUE)
set #Com_Owner avMiniFiltButtonCap1(*MTXTDF_SEARCH)
* set #Com_Owner avMiniFiltButtonWid1(200)

* 以下を使って、検索の初期値を渡すこともできます。:
* set #Com_Owner avMiniFiltValue1('指定の検索初期値')
 
endroutine

*
* ミニ検索パネルから検索の指示を実行
*

Mthroutine Name(uMiniFilterButton) Desc('Handle a mini filter button click') Help('Overwrite this method with your own logic if required.')Options(*REDEFINE)
* Define_Map For(*input) Class(#vf_elnum) Name(#uButton)
* Define_Map For(*input) Class(#vf_elurl) Name(#uValue1) Mandatory(' ')
* Define_Map For(*input) Class(#vf_elurl) Name(#uValue2) Mandatory(' ')
* Define_Map For(*input) Class(#vf_elurl) Name(#uValue3) Mandatory(' ')

Define #Button *dec 1 0

* ユーザーが押したミニ・フィルターのボタンがどれであるかを決定
change #Button #uButton
case #button
when '= 1'

* ユーザーがミニ・フィルターに入力した検索値を取得
USE BUILTIN(UPPERCASE) WITH_ARGS(#UVALUE1) TO_GET(#SURNAME)

* 検索を行い、結果をインスタンスリストに入れる

Invoke Method(#avListManager.BeginListUpdate)

Invoke Method(#avListManager.ClearList)

* 姓の一部またはすべてを使って社員のレコードを名前順に選択し、インスタンスリストに追加
Select Fields(#EMPNO #GIVENAME #SURNAME) From_File(PSLMST2) With_Key(#SURNAME) Generic(*YES)
* フィルター右側のインスタンスリストにエントリー追加
Execute Subroutine(ADDLIST) With_Parms(#SURNAME #GIVENAME #EMPNO)
Endselect

* 更新終了を示す
Invoke Method(#avListManager.EndListUpdate)

endcase


endroutine

* =============================================================================
* サブルーチン
* =============================================================================

*
* フィルター右側のインスタンスリストにエントリー追加
*
Subroutine Name(ADDLIST) Parms(#SURNAME #GIVENAME #EMPNO)

* ビジュアル識別子を生成

Use BConcat (#GiveName #SurName) #FullName

Invoke Method(#avListManager.AddtoList) Visualid1(#Empno) Visualid2(#FullName) Akey1(#Empno)

Endroutine

End_Com