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

7.7.2 伝票情報管理用のフォーム
●メニュー選択によって伝票管理用のフォームが開くようにする
 次に,ユーザーがメニュー項目を選択したときに伝票管理用のフォームを開くように実装する。そのためには,メニューから[表示]−[伝票情報]を選択したときに(Menu_Slip項目が押されたときに)Fig.7-86で示したFormSlipフォームを表示させればよい(メニュー項目についてはTable 7-27を参照)。その実装は,List 7-114のようになる。

●フォームのサイズに部品を揃える
 次に,ユーザーが変更したフォームのサイズに合わせて,コンポーネントの位置やサイズを調整する処理を実装しておく。このような機能を実現するには,FormSlipフォームのForm_ResizeプロシージャをList 7-115のように実装すればよい。

●フォームがロードされたときの処理
 FormSlipフォームがロードされたときには,次の3つの処理を実行する。

権限の調査
 ユーザーがどのロールに属しているのかを調べ,FormSlipフォームに付けられているボタンのうち,利用できないボタンを不可視にする。  
データグリッドコントロールの内容の更新
 DGrid_Slipデータグリッドの内容を更新し,その時点で登録されている伝票の内容を表示するようにする。  
検索用コンボボックスに列見出しを格納
 COMBO_SEARCHFIELDコンボボックスに,DGrid_Slipデータグリッドに記載されている列見出しを格納する。
○データグリッドコントロールの内容の更新
 まずは,DGrid_Slipデータグリッドの内容を更新するという処理から実装してゆく。DGrid_Slipデータグリッドに最新の伝票情報を反映させるには,すでにBusiness.Slipコンポーネントに実装したGetSlipsメソッド(List 6-171)を呼び出し,伝票情報を含むADODB.Recordsetオブジェクトを取得し,それとDGrid_Slipデータグリッドとを結び付ければよい。

 GetSlipsメソッドには,条件と合致した伝票のみを返す機能が搭載されている。その書式は,次のようになっている。

Public Function GetSlips( _
  ByVal start_MADEDATE As Variant, _
  ByVal end_MADEDATE As Variant, _
  ByVal start_DELIVERDATE As Variant, _
  ByVal end_DELIVERDATE As Variant, _
  ByVal IncludeOtherMade As Boolean, _
  ByVal filterSlip As FILTER_SLIP, _
  ByVal IncludeDeleted As Boolean, _
  Optional ByVal CustomerID As Long = -1) _
) As ADODB.Recordset

 今回は,この引数を利用することで,ユーザーが絞り込みの設定画面(Fig.7-81)で指定した条件と合致する伝票だけを取得できるように実装する。

 そのためにまず,List 7-116に示すRefreshDataというプロシージャを用意する。

 RefreshDataプロシージャは,Business.SlipコンポーネントのGetSlipsメソッドを呼び出して伝票情報を含むADODB.Recordsetオブジェクトを取得し,それをDGrid_Slipデータグリッドと関連付けるという処理をするものである。GetSlipsメソッドを呼び出している箇所は23〜28行目であり,ここでは,CHK_FILTERチェックボックス([絞り込み]チェックボックス)の状態によって,絞り込みを有効にして伝票を取得するか(25行目),絞り込みなしですべての伝票を取得するか(28行目)を使い分けている。

 25行目で使っている8つのグローバル変数(g_startMADEDATEg_endMADEDATEg_startDELIVERDATEg_endDELIVERDATEg_IncludeOtherMade, g_filterSlip, g_includedeletedg_CUSTOMERID)は,ユーザーがFig.7-81の絞り込み設定ウィンドウにおいて指定した絞り込み内容を反映する変数である。実際にこれらの変数の値を設定する処理については,「7.7.6 絞り込み処理」で説明する。

 また,33行目で設定しているg_Order変数は,並べ替えの項目名が入る変数名とする。DGrid_Slipデータグリッドの列見出しがクリックされたときに並べ替え処理をするため,HeadClickイベントに対してList 7-117に示す処理を実装しておくことになる。

○検索用コンボボックスに列見出しを格納する処理
 次に,検索用コンボボックスにDGrid_Slipデータグリッドの列見出しを格納する処理を実装する。ここでは,List 7-118に示すSetFieldListという名前のプロシージャを用意して処理させる。

○フォームがロードされたときの処理の実装
 フォームがロードされたときに必要となるプロシージャが揃ったところで,フォームがロードされたときの処理を実際に実装してゆく。先に説明したように,フォームがロードされたときには,(1)権限を調査して一部のボタンを不可視にする,(2)データグリッドの内容を更新する,(3)列見出しをコンボボックスに設定する,という3つの処理を実行すればよい。その実装は,List 7-119のようになる。

 List 7-119はやや長い。その理由は,FormSlipフォーム上に存在する多数のボタンの可視または不可視を,ユーザーのロールを判定しながら逐一設定しているためである。13〜107行目はユーザーのロールによってボタンの可視または不可視を設定する部分,109〜122行目はデータグリッドコントロールの内容を更新する部分,125行目はコンボボックスにデータグリッドコントロールの列見出しを設定する部分,となっている。

Prev 98/134 Next