この特集のトップページへ
>
Chapter 7:プレゼンテーション層の構築
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フォームの画面構成
○絞り込みを設定するメソッド
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_CUSTOMERID,g_BILLSTATUS,g_startMADEDATE,g_endMADEDATE,g_startSUBMITDATE,g_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_CREATED | 1 | 作成ずみのものを含む |
FILTER_BILL_SEND | 2 | 送付ずみのものを含む |
FILTER_BILL_PAID | 4 | 入金確認ずみのものを含む |
FILTER_BILL_DELETED | 8 | 削除ずみのものを含む |
FormBillFilterフォーム(Fig.7-107)上に配置されたテキストボックスやチェックボックス,コンボボックスと,GetBillsメソッドの引数との関係は,Table 7-44のようになる。List 7-188では,Table 7-44の対応どおりに,引数に渡された各変数を設定していることになる。
Table 7-44 FormBillFilterフォームの各コンポーネントとGetBillsメソッドの引数との対応
FormBillFilterフォーム上のコンポーネント | GetBillsメソッドの引数 |
---|---|
CHK_CREATED | Status引数のFILTER_BILL_CREATEDフラグ |
CHK_SEND | Status引数のFILTER_BILL_SENDフラグ |
CHK_PAID | Status引数のFILTER_BILL_PAIDフラグ |
CHK_DELETED | Status引数のFILTER_BILL_DELETEDフラグ |
CHK_CUSTOMER | CustomerIDがNullであるときチェック状態,そうでないとき非チェック状態 |
COMBO_CUSTOMER | CustomerIDがNullでないとき,CustomerIDを顧客番号として持つ顧客の顧客名。CustomerIDがNullであるときは淡色表示 |
TXT_MADEDATESTART | start_MADEDATE |
TXT_MADEDATEEND | end_MADEDATE |
TXT_SUBMITDATESTART | start_SUBMITDATE |
TXT_SUBMITDATEEND | end_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のようになる。
124/134 |