連載:アップグレード・ウィザードに学ぶVB 6→VB 2005第4回 アップグレード・ウィザードもお手上げ? VB 6と.NETの印刷の違いグレープシティ株式会社 八巻 雄哉2007/04/17 |
|
Back Issue
|
||||||
|
今回取り上げるVisual Basic 6.0(以下VB 6)の特殊オブジェクトは「Printerオブジェクト」です。VB 6では、このPrinterオブジェクトを利用して文字列や図形を印刷することができました。
以下のリスト1は、VB 6でPrinterオブジェクトを使って印刷するサンプル・プロジェクトのコードです。
|
|
リスト1 Printerオブジェクトを使ったVB 6のサンプル・プロジェクトのコード | |
フォーム上には1つのボタン(PrintButton)が配置されているものとする。 |
このサンプル・プロジェクトを実行すると、下記の図1のように、2ページにわたっていくつかのグラフィックが印刷されます。
図1 リスト1のVB 6プログラムの実行結果 |
「Microsoft Office Document Image Writer」を通常使うプリンタに設定し、リスト1のコードで印刷される内容をプレビューさせたもの。左側が1ページ目で、右側が2ページ目となっている。 |
いつもどおりであれば、ここでアップグレード・ウィザードを使ってコードを変換するところですが、残念ながら今回はそうはいきません。
今回のタイトルからすでにお気付きかもしれませんが、Printerオブジェクトとそのすべてのメンバはアップグレード・ウィザードではまったく変換されず、以下の図2のようにすべてアップグレード・エラーとなってしまいます。
図2 リスト1のコードをアップグレード・ウィザードを使って変換した結果 |
Printerオブジェクトに関するコードにはすべて「アップグレードされませんでした。」というコメントが挿入されている。 |
VB 6のPrinterオブジェクトを使った印刷では、描画を含めページの終わりや印刷の終わりといった宣言もすべてPrinterオブジェクトのプロパティやメソッドを操作することで行っていました。この方法は非常にシンプルであるため手軽に扱うことができますが、印刷するページ数が多くなるにつれコードが煩雑になってしまうというデメリットがありました。
Visual Basic 2005(以下VB 2005)では印刷の手順が大きく変わりました。VB 2005では、印刷が必要なときにページ単位にイベントが発生し、イベント・ハンドラ内でグラフィック描画メソッドを呼び出して描画を行うイベント・ドリブン(イベント駆動型)の印刷処理が採用されています。ページ単位の印刷処理にマッチした手法となったことで、開発者は描画処理のコードに集中することができるようになっています。
しかしながら、構造的に大きく異なってしまったため、アップグレード・ウィザードによる機械的な変換では対応することができません。そうすると、アップグレード・ウィザードからは学べないということになってしまいますが、印刷は業務アプリケーションで欠かすことのできない処理です。
そこで今回は、リスト1のPrinterオブジェクトを使用して印刷を行うVB 6のコードを手動でVB 2005に変換し、ポイントとなる部分について解説していきたいと思います。
INDEX | ||
アップグレード・ウィザードに学ぶVB 6→VB 2005 | ||
第4回 アップグレード・ウィザードもお手上げ? VB 6と.NETの印刷の違い | ||
1.アップグレード・ウィザードでも変換できないVB 6のコード | ||
2.VB 2005における印刷処理のコーディング | ||
3.VB 6の資産の移行は? | ||
「アップグレード・ウィザードに学ぶVB 6→VB 2005」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -