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

7.7.5 伝票情報の遷移
●コメントを入力するフォームを作る
 基本的には,Table 7-36に示したようにボタンの機能に対応するBusiness.Slipコンポーネントの各メソッドを呼び出せばよいのだが,RequestConsent(承認依頼),ConsentSlip(承認),RejectSlip(却下),SendSlip(発送),AccountingSlip(経理処理)という5つのメソッドに関しては,ユーザーがそれぞれ承認依頼時,承認時,却下時,発送時,経理処理時にコメントを指定できるようにする必要がある。そこで,コメントを入力することができるように,Fig.7-90に示すFormInputMsgフォームを用意しておく。

Fig.7-90 FormInputMsgフォーム
fig7_90

 FormInputMsgフォームは,メッセージを表示するためのLABEL_MSGラベル,テキストを入力するためのTXT_MSGテキストボックス,[OK]ボタン(BTN_OKボタン)と[キャンセル]ボタン(BTN_CANCELボタン)を備えるだけの単純なフォームである。ユーザーが承認依頼,承認,却下,発送,経理処理といういずれかの処理をするときには,このFormInputMsgフォームをユーザーに表示し,コメントの入力を求めることにする。

 そこで,FormInputMsgフォームにList 7-132で示すGetMessageというプロシージャを用意しておく。

 GetMessageプロシージャは,引数として,ウィンドウのタイトル(フォームのCaptionプロパティの値),LABEL_MSGラベルに表示する文字,TXT_MSGテキストボックスに表示する文字を順に受け取り,FormInputMsgフォームをモーダル表示する。そして,ユーザーが[OK]ボタンを押したときにはTXT_MSGテキストボックスに入力された文字列を,[キャンセル]ボタンを押したときにはNullを,それぞれ返す機能を持つ。[OK]ボタンならびに[キャンセル]ボタンを押したときの処理は,List 7-133のように実装する。

 以上のように実装することで,ユーザーが承認依頼,承認,却下,発送,経理処理を必要とするときには,FormInputMsgフォームのGetMessageプロシージャ(List 7-132)を呼び出すことにより,ユーザーにコメントの入力を求めつつ,指定された処理を実現できるようになる。


One Point! わざわざFormInputMsgフォームのようなフォームを用意しなくても,Visual Basicに用意されているInputBox関数を使ってもよい。InputBox関数は,Fig.7-90で示したFormInputMsgフォームのようなフォームを表示し,ユーザーに文字を入力させるという機能を備える。しかし,InputBox関数は,ユーザーが[キャンセル]ボタンを押したときに空文字("")を返す仕様であるため,ユーザーが[キャンセル]ボタンを押したのか,何も文字を入力せずに[OK]ボタンを押したのかを区別できない。そのため,この点を区別できるように,ここではあえてInputBox関数を使わず,[キャンセル]ボタンが押されたときにNullを返す仕様としたFormInputMsgフォームを用意した。

●伝票の状態を変化させる機能の実装
 ユーザーからのコメント入力を受け付けるフォームを作ったところで,実際に伝票の状態を変化させる各ボタンが押されたときの処理内容を実装してゆこう。

 まずは,[承認依頼]ボタン(BTN_REQUESTCONSENTボタン)が押されたときの処理を実装してみる。これは,List 7-134のようになる。

 List 7-134の処理は実に簡単である。7行目でFormInputMsgフォームのGetMessageプロシージャ(List 7-132)を呼び出して承認依頼時のコメントを入力させたのち,14行目でBusiness.SlipコンポーネントのRequestConsentメソッド(List 6-163)を呼び出して伝票の状態を「承認依頼」にしているだけである。なお,17〜20行目は,伝票の状態を「承認依頼」にしたのち,DGrid_Slipデータグリッドの内容を更新するための処理である。

 [承認依頼]ボタンが押されたときの処理と同様に,[承認依頼取消][承認][承認取消][却下][却下取消][発送][発送取消][経理処理][経理処理取消][請求書作成]という各ボタンに対応する処理を実装する。具体的には,List 7-135のようになる。

Prev 105/134 Next