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

head2.gif 7.8.3 請求書の明細処理
 請求書処理の実装をほとんど終えたところで,次に,請求書に付随する明細の処理を実装する。

●請求書明細処理用のフォームの作成
 まずは,本節冒頭のFig.7-104で示した請求書明細情報ウィンドウを提供するフォームを実装する。ここでは,Fig.7-109に示すFormBillDetailフォームとして提供することにしよう。FormBillDetailフォームは,MDI子ウィンドウではなく,通常のフォームとし,モードレスウィンドウとして表示することにする。

Fig.7-109 FormBillDetailフォームの画面構成
fig7_109

 FormBillDetailフォームは,伝票処理で実装したFormSlipDetailフォーム(Fig.7-92)と非常によく似ている。FormBillDetailフォームでは,請求書に付随する明細の一覧を表示するのに,データグリッドコントロールではなく階層フレキシブルグリッドコントロールを用いた。

 FormBillDetailフォーム上に配置された各コンポーネントの役割は,次のとおりである。

[印刷]ボタン
 この請求書の明細を印刷する。印刷の際には,伝票明細の印刷と同様,中央のFRAME_BILLフレームの内容もそのまま印刷する。請求書の印刷例を,Fig.7-110に示す。
 
FRAME_BILLフレーム
 請求書の見出しを表示するフレームである。印刷時には,Fig.7-110に示すような形式で出力する。請求書の右上には,一般に請求元の企業名などが入るのが常であるが,Fig.7-109を参照するとわかるように,その記載はしていない。詳しくは,「7.8.4 印刷処理」で説明するが,印刷時にフレームの内容を描画するには,すでに実装したFormPrintPreviewフォームのDrawFrameプロシージャ(List 7-174)を用いる。DrawFrameプロシージャでは,フレーム上のすべてのラベル,テキストボックス,ラインをプリンタへと出力するように実装した。よって,企業名などをラベルとしてFRAME_BILLフレームに配置すれば,その内容がそのまま印刷されるようになる。
 
FLXGrid_SlipDetail階層フレキシブルグリッド
 請求書に結び付けられた明細の一覧を表示する階層フレキシブルグリッドコントロールである。請求書の明細一覧を取得するには,Business.BillコンポーネントのGetBillDetailsメソッド(List 6-182)を用いる。FLXGrid_SlipDetail階層フレキシブルグリッドには,Fig.7-110に示すとおり,左から順に「日付」「製品名」「数量」「単価」「価格」「備考」という6列を表示する。

One Point!FormBillDetailフォームには,[最新の状態に更新]ボタンを用意しなかった。なぜなら,このアプリケーションでは,設計上,いったん作成された請求書の明細は請求書自身が削除されるまで変更されることはないからである。

Fig.7-110 請求書明細の印刷例
fig7_110

○フォームのサイズが変更されたときの処理
 まずは,フォームのサイズが変更されたときに,それに合わせて各コンポーネントのサイズや位置を変更し,フォームサイズいっぱいに広げる処理を実装しておく。その処理は,List 7-201のようになる。

Prev 128/134 Next