この特集のトップページへ
Chapter 7:プレゼンテーション層の構築

head2.gif 7.8.2 各ボタンが押されたときの処理
 FormBillフォーム(Fig.7-105)の初期設定を実装したところで,フォーム上の各ボタンが押されたときの処理を順に実装してゆく。ここでは,[印刷]ボタン以外のボタンが押されたときの処理をすべて実装する。[印刷]ボタンの処理は,請求書明細とも関連するため,のちに「7.8.4 印刷処理」で扱うことにする。

●[最新の状態に更新][検索][表示項目]という各ボタンが押されたときの処理
 まずは,[最新の情報に更新][検索][表示項目]という各ボタンが押されたときの処理を実装する。これらの処理は,非常に簡単である。

○[最新の情報に更新]ボタンが押されたとき
 [最新の情報に更新]ボタン(BTN_REFRESHボタン)が押されたときには,DGrid_Billデータグリッドの内容を更新する。その実装は,List 7-185のようになる。List 7-185では,すでにList 7-181で実装しておいたRefreshDataプロシージャを呼び出したのち,カレント行の位置を設定し直している。

○[検索]ボタンが押されたとき
 [検索]ボタン(BTN_SEARCHボタン)が押されたときには,TXT_SEARCHテキストボックスに入力された条件と合致するレコードをカレント行とするような検索をする。その実装は,List 7-186のようになる。List 7-186では,ADODB.RecordsetオブジェクトのFindメソッドを使って検索を実現しており,処理内容は「7.4.6 顧客の検索」で実装したものとほとんど同じである。

○[表示項目]ボタンが押されたとき
 [表示項目]ボタン(BTN_VIEWボタン)が押されたときには,FormSetGridフォーム(Fig.7-31)を表示し,どの列をDGrid_Billデータグリッドに表示するのかをユーザーが選択できるようにする。その実装は,List 7-187のようになる。

●絞り込み処理
 ユーザーが[絞り込み]ボタン(BTN_FILTERボタン)を押したときには,Fig.7-106で示した絞り込み設定用のウィンドウを表示し,そこで絞り込み条件を設定できるようにする。そこで,Fig.7-107に示すFormBillFilterというフォームを用意する。FormBillFilterフォームは,モーダルウィンドウとして表示する。

Fig.7-107 FormBillFilterフォームの画面構成
fig7_107

○絞り込みを設定するメソッド
 FormBillFilterフォームには,(1)List 7-188で示すSetFilterプロシージャの処理,(2)List 7-189で示す[OK]ボタン(BTN_OKボタン)や[キャンセル]ボタン(BTN_CANCELボタン)が押されたときの処理,(3)[下記の顧客に絞る]チェックボックス(CHK_CUSTOMERチェックボックス)が有効になったときの処理,を実装する。

 List 7-188で示したSetFilterプロシージャは,絞り込み条件を設定する変数を引数にとる。そして,FormBillFilterフォームの内容を,その変数で設定された情報に変更してから,FormBillFilterフォームをモーダルウィンドウとして表示する。そして,FormBillFilterフォームにて[OK]ボタン(BTN_OKボタン)が押されたときにはユーザーがFormBillFilterフォームで設定した内容に従って,絞り込み条件を設定する変数を書き換える。なお,List 7-188の65行目や69行目で利用しているFillComboプロシージャは,その時点で登録されている全顧客名をCOMBO_CUSTOMERコンボボックスに格納する働きを持つ。このプロシージャは,List 7-190のように実装する。

 SetFilterプロシージャに引き渡す引数とは,List 7-181の5〜10行目に定義したグローバル変数g_CUSTOMERIDg_BILLSTATUSg_startMADEDATEg_endMADEDATEg_startSUBMITDATEg_endSUBMITDATEである。List 7-181の23行目を見るとわかるように,これらのグローバル変数は,Business.BillコンポーネントのGetBillsメソッド(List 6-186)の呼び出しに際して使う引数である。List 6-186では,GetBillsメソッドの引数を次のように定義した。

Public Function GetBills( _
  ByVal CustomerID As Variant, _
  ByVal Status As FILTER_BILL, _
  ByVal start_MADEDATE As Variant, _
  ByVal end_MADEDATE As Variant, _
  ByVal start_SUBMITDATE As Variant, _
  ByVal end_SUBMITDATE As Variant) _
As ADODB.Recordset
CustomerID
 顧客によって絞り込むときの顧客番号。Nullであれば,顧客による絞り込みはなし。
 
Status
 請求書の状態による絞り込み。Table 7-43に示すFILTER_BILL列挙型の組み合わせで指定する。FILTER_BILL_ALLのときには,すべての請求書を示す。
 
start_MADEDATE
 請求書作成日によって絞り込むときの開始日。Nullであれば,絞り込みはなし。
 
end_MADEDATE
 請求書作成日によって絞り込むときの終了日。Nullであれば,絞り込みはなし。

 
start_SUBMITDATE
 請求書の入金確認日によって絞り込むときの開始日。Nullであれば,絞り込みはなし。
 
end_SUBMITDATE
 請求書の入金確認日によって絞り込むときの終了日。Nullであれば,絞り込みはなし。
Table 7-43 FILTER_BILL列挙型
定数意味
FILTER_BILL_ALL&HFFFFFFFF(-1と同じ)すべての請求書
FILTER_BILL_CREATED1作成ずみのものを含む
FILTER_BILL_SEND2送付ずみのものを含む
FILTER_BILL_PAID4入金確認ずみのものを含む
FILTER_BILL_DELETED8削除ずみのものを含む

 FormBillFilterフォーム(Fig.7-107)上に配置されたテキストボックスやチェックボックス,コンボボックスと,GetBillsメソッドの引数との関係は,Table 7-44のようになる。List 7-188では,Table 7-44の対応どおりに,引数に渡された各変数を設定していることになる。

Table 7-44 FormBillFilterフォームの各コンポーネントとGetBillsメソッドの引数との対応
FormBillFilterフォーム上のコンポーネントGetBillsメソッドの引数
CHK_CREATEDStatus引数のFILTER_BILL_CREATEDフラグ
CHK_SENDStatus引数のFILTER_BILL_SENDフラグ
CHK_PAIDStatus引数のFILTER_BILL_PAIDフラグ
CHK_DELETEDStatus引数のFILTER_BILL_DELETEDフラグ
CHK_CUSTOMERCustomerIDがNullであるときチェック状態,そうでないとき非チェック状態
COMBO_CUSTOMERCustomerIDがNullでないとき,CustomerIDを顧客番号として持つ顧客の顧客名。CustomerIDがNullであるときは淡色表示
TXT_MADEDATESTARTstart_MADEDATE
TXT_MADEDATEENDend_MADEDATE
TXT_SUBMITDATESTARTstart_SUBMITDATE
TXT_SUBMITDATEENDend_SUBMITDATE

 以上で,FormBillFilterフォーム(Fig.7-107)の処理が実装できた。そこで,FormBillフォーム(Fig.7-105)で[絞り込み設定]ボタン(BTN_FILTERボタン)を押したときの処理を実装する。この処理では,先に実装したFormBillFilterフォームのSetFilterプロシージャ(List 7-188)を呼び出せばよく,その実装はList 7-191のようになる。

 また,ユーザーが[絞り込み]チェックボックス(CHK_FILTER)をクリックしたときの処理も実装しておく。ユーザーが[絞り込み]チェックボックスをクリックしたときには,絞り込み状態と絞り込まない状態とを切り替えることになる。この処理は,すでに実装したRefreshDataプロシージャで処理している(List 7-181の21行目にあるIf文を参照)。よって,[絞り込み]チェックボックスを有効にしたときには,RefreshDataプロシージャを呼び出し,DGrid_Billデータグリッドを更新しさえすればよい。その実装は,List 7-192のようになる。

Prev 124/134 Next