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

7.7.8 明細処理
●明細処理フォームを開く
 では次に,明細処理用のフォームであるFormSlipDetailフォーム(Fig.7-92)を開き,伝票の明細を表示する処理を実装する。

○明細を設定する
 明細処理用のフォームであるFormSlipDetailフォームは,伝票処理用のフォームであるFormSlipフォーム(Fig.7-86)の[明細]ボタン(BTN_DETAILボタン)が押されたときに表示させる。つまり,[明細]ボタンが押されたときにShowメソッドを使ってFormSlipDetailフォーム(Fig.7-92)を表示することになる。しかし,それだけではユーザーがFormSlipフォームで選択している伝票の明細はFormSlipDetailフォームに表示されない。何らかの形でFormSlipフォーム側からFormSlipDetailフォーム側に,どの伝票番号を持つ伝票の明細を表示するのかを指示し,FormSlipDetailフォーム側でその明細を描画するという処理が必要となる。

 そこで,FormSlipDetailフォームにList 7-147に示すInitDataというプロシージャを用意する。

 InitDataプロシージャは,引数に伝票番号をとり,その伝票番号に対応する伝票情報ならびに明細をFormSlipDetailフォーム内に表示させる働きを持っている。

 InitDataプロシージャでは,まず21行目で引数として渡された伝票番号をグローバル変数SlipIDに保存する。これにより,後続の処理でグローバル変数SlipIDを参照すれば,どの伝票の明細を扱っているのかわかるようになる。

 続いて,29〜35行目で伝票の情報を取得する。29行目はBusiness.SlipコンポーネントのGetSlipメソッド(List 6-112)を用いて伝票の小計,消費税額,合計などを,31行目はBusiness.CustomerコンポーネントのGetCustomerメソッド(List 6-24)を使って伝票の取引先となっている顧客の情報を,33行目はBusiness.SlipコンポーネントのGetSlip_Detailメソッド(List 6-121)を使って納入先の情報を,35行目はBusiness.SlipコンポーネントのGetSlip_Statusメソッド(List 6-120)を使って伝票の状態を,それぞれ取得している。GetSlip_Statusメソッドで取得した伝票の状態については,あとで参照することができるように,グローバル変数g_SlipStatusに格納するようにした。

 37〜69行目の部分は,29〜35行目で取得した伝票情報をもとに,FormSlipDetailフォーム上に配置したラベルやテキストボックスの文字列を設定する箇所である。

 そして,71〜83行目は,ボタンを淡色表示するかどうかを決める箇所になっている。72行目を見るとわかるように,伝票が作成状態(Creating)か却下ずみ(Rejected)のときには,[新規](BTN_NEW)ボタン,[編集](BTN_EDIT)ボタン,[削除](BTN_DELETE)ボタンを通常表示とし,そうでないときには淡色表示にすることにした。なぜなら,すでに「6.4 伝票管理処理」でも説明したように,伝票の状態が「承認依頼」以降に進んでいる場合には,明細を編集させないようにするという指針をとったためである。

Prev 110/134 Next