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

7.7.3 伝票情報の新規作成と編集
●伝票の編集のためのフォーム初期化
 次に,伝票を編集する際のフォームの初期化処理を実装する。この処理は,伝票を新規作成するときの初期化処理(List 7-122)と似ているが,編集対象となる伝票の最新情報を,テキストボックスやコンボボックスにあらかじめ表示しておくという点が異なる。

 まずは,List 7-124に示すEditSlipプロシージャをFormSlipフォームに実装する。

 EditSlipプロシージャは,引数に指定された伝票番号をもとに伝票の情報を取得し,テキストボックスやコンボボックスに表示する。この処理内容は,フォームの初期化処理に相当する。伝票情報を取得している箇所はList 7-124の23〜27行目で,情報の取得にはBusiness.SlipコンポーネントのGetSlipメソッド(List 6-112),GetSlip_Billメソッド(List 6-114),GetSlip_Detailメソッド(List 6-121)を用いている。

 また,14行目にあるとおり,引数に与えられた伝票番号をグローバル変数SlipIDに保存するようにした。これにより,編集対象となっている伝票の伝票番号を,あとからグローバル変数SlipIDを通じて取得できるようになる。

 FormSlipフォーム(Fig.7-86)の[編集]ボタン(BTN_EDIT)が押されたときには,EditSlipプロシージャを呼び出してフォームを初期化したのち,FormEditSlipフォーム(Fig.7-87)をモーダルウィンドウとして表示する。そうすることで,ユーザーは伝票情報を編集できるようになる。その実装は,List 7-125のとおりである。

●[OK]ボタンや[キャンセル]ボタンが押されたときの処理
 以上の実装によって,ユーザーがFormSlipフォーム(Fig.7-86)の[新規]ボタンや[編集]ボタンを押すと,FormEditSlipフォーム(Fig.7-87)が表示され,伝票を新規作成したり編集したりできるようになる。あとは,ユーザーがFormEditSlipフォームの[OK]ボタン(BTN_OK)を押したときに,入力されている情報に基づいて伝票を新規に登録したり,既存の伝票を更新したりする処理を実装すればよい。その実装は,List 7-126のようになる。

 List 7-126の7〜13行目では,ユーザーがCOMBO_CUSTOMERコンボボックスで選択した顧客の顧客番号を取得する。もしCOMBO_CUSTOMERコンボボックスでどの顧客も選択されていなかったならば,8〜11行目にあるようにエラーメッセージを表示し,以降の処理は何もしないようにした。

 25行目以降は,伝票を追加したり既存の伝票を更新したりする処理となっている。25行目ではまず,グローバル変数SlipIDの内容が-1であるかどうかを調べる。-1であった場合には,新規に伝票を登録するため,Business.SlipコンポーネントのAddSlipメソッド(List 6-94)を呼び出す(27行目)。そうでない場合には,同コンポーネントのUpdateSlipメソッド(List 6-110)を呼び出すことで,既存の伝票を更新するという処理をしている。

 以上で,[OK]ボタンが押されたときに新規伝票を登録したり既存伝票を更新したりすることができるようになる。ところで,Fig.7-87を参照するとわかるように,FormEditSlipフォームには[キャンセル]ボタン(BTN_CANCEL)も用意されている。ここで,このボタンが押されたときの処理も実装しておく。

 [キャンセル]ボタンが押されたときには,単純にフォームを閉じるだけとする。その実装は,List 7-127のようになる。

Prev 101/134 Next