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

7.4.7 顧客情報の印刷処理
●プリンタが接続されていないとき
 ところで,いままでは必ず何かしらのプリンタがクライアントにインストールされているということを前提として説明してきた。しかし,プリンタがインストールされていない環境も考えられる。

 では,プリンタがインストールされていない状況下でプリンタに出力しようとした場合には,どうなるのだろうか。これは,実行時エラーとなる。というのは,Printerオブジェクトが利用できないためである。

 現在接続されているプリンタの数は,PrintersコレクションのCountプロパティに保持される。つまり,PrintersコレクションのCountプロパティの値が0であれば,プリンタはインストールされていないということを示す。

 そこで,PrintersコレクションのCountプロパティの値を判断し,プリンタがインストールされていないのであれば,プリンタ出力機能を使えなくするという処理を実装しておく。

 今回のアプリケーションでプリンタを使うのは,次の2つのときである。

  1. [ファイル]メニューから[プリンタの設定]を選択したとき

  2. 顧客情報を表示するFormCustomerフォーム(Fig.7-16)で[印刷]ボタンを押したとき

 そこで,プリンタがインストールされていないときには,[プリンタの設定]メニューを選択したり[印刷]ボタンを押したりしたときにエラーメッセージを表示させるようにする。

 そのためには,まず[プリンタの設定]メニューが選択されたときに実行されるMenu_Printer_Clickプロシージャ(List 7-59)を,List 7-60のように変更する。また,[印刷]ボタンが押されたときに実行されるFormCustomerフォームのBTN_PRINT_Clickプロシージャ(List 7-37)をList 7-61のように変更する。

 List 7-60List 7-61も,PrintersコレクションのCountプロパティが0であるかどうかを調べる。もし0である,つまりプリンタがインストールされていないのであれば,エラーメッセージを表示する。

●プリンタ設定のまとめ
 今回説明したように,Visual Basicの機能だけを使ったのでは,用紙サイズやプリンタの機種を変更することができないため,Win32APIの関数を呼び出す必要が生じる。Win32APIの関数を利用するのは比較的難しいが,引数の意味さえ理解してしまえば,たいていの場合は何とかなる。

 とはいえ,Win32APIの使い方を誤ると,アプリケーションが暴走したり(場合によっては,OSまで道連れになることもある),メモリリークが発生したりといった問題が生じ,不安定になることがある。そのため,Win32APIを使って開発するときには,必ず実行まえに開発中のソースファイルを保存しておくなど,問題に備えた処置をしておくことが大切である。

 Visual Basicは統合環境なので,いつでも好きなときに開発をしながら,メニューから[実行]−[開始]を選択することでアプリケーションを実行できる。また,任意の場所でプログラムを停止するようなデバッグ機能を備えているので,ついつい試しに実行して動作を確かめ,不具合があったらその時点で修正してゆくという,トライ&エラーのスタイルで開発することが多い。しかし,Win32APIを使う場合には,Win32APIの引数を少し間違えただけですぐ暴走に繋がる。よって,開発にあたっては,慎重になりたい。

■次回予告
 以上で,顧客管理処理に関する実装は完了である。次回は,「製品管理処理」「伝票管理処理」「請求書管理処理」を実装してゆくわけだが,ほとんどの処理は本節で説明したのと似たような処理になる。

 とくに印刷処理については,本節で作成したフォームやプロシージャをそのまま流用できるので,改めて作り直す必要もない。

DOWNLOAD

 本章で作成してきたプレゼンテーション層のソースは以下の場所からダウンロードできる。

BusinessUI_02.LZH(64,383バイト)

 プレゼンテーション層は,ビジネスロジック層のCOMコンポーネントを使ってデータベースを操作するため,ビジネスロジック層のCOMコンポーネントを含むCOMアプリケーションがインストールされていないと動作させることができない。ビジネスロジック層のCOMアプリケーションはChapter 6の最後からダウンロードできる。

Prev 65/134 Next