連載:アップグレード・ウィザードに学ぶVB 6→VB 2005第4回 アップグレード・ウィザードもお手上げ? VB 6と.NETの印刷の違いグレープシティ株式会社 八巻 雄哉2007/04/17 |
|
|
VB 6の資産の移行は?
さて、ここまでVB 6のPrinterオブジェクトを使用して印刷を行っているコードを、VB 2005のPrintDocumentコンポーネントを使って再現するという方法をご覧いただきました。
確かにVB 2005のPrintDocumentコンポーネントを使った印刷処理は、VB 6のPrinterオブジェクトを使ったそれよりも洗練されており、使いやすいものとなっています。しかしながら、VB 6のPrinterオブジェクトを使っている印刷プログラムの資産を多くお持ちの方にとっては、それらをPrintDocumentコンポーネントを使ってVB 2005で再構築するというのはおよそ現実的ではないでしょう。
というわけで、そんな方にとっての最適なソリューションになる(かもしれない)ライブラリ「Printer Compatibility Library 1.0」をご紹介したいと思います。
■Printer Compatibility Library 1.0
Printer Compatibility Library 1.0は、VB 6のPrinterオブジェクトとPrintersコレクションをVB 2005で再現したライブラリです。これは、「Visual Basic 2005 Power Packs」の1つとして、英語版のみが提供されています。Visual Basic 2005 Power Packsは、マイクロソフトが無償で提供している、VB 2005でのアプリケーション開発を支援するアドイン、コントロール、ツールの集合体です。
Printer Compatibility Library 1.0を利用することで、VB 6のPrinterオブジェクトを使用した印刷プログラムのコードを、ほぼそのままVB 2005で使用することができます。
Printer Compatibility Library 1.0は、下記のサイトから単体でダウンロードしてインストールすることができます。
Microsoft Printer Compatibility Library 1.0
では、実際にPrinter Compatibility Library 1.0を使用する方法をご紹介していきましょう。ここではこのライブラリを使って、リスト1のVB 6のコードをVB 2005で使えるようにしてみます。
VB 2005でWindowsアプリケーションのプロジェクトを新規に作成し、フォームにボタン(PrintButton)を1つ配置した状態から説明します。
(1)参照設定の追加
まず、Printer Compatibility Library 1.0への参照設定をプロジェクトに追加しておきます。
メニューの[プロジェクト]−[参照の追加]をクリックして、[参照の追加]ダイアログを表示させます。[.NET]タブの一覧に「Microsoft.VisualBasic.PowerPacks.Printing.Printer」というコンポーネントが存在しているはずですので、これを選択して[OK]ボタンをクリックします。
図4 [参照の追加]ダイアログ |
Printer Compatibility Library 1.0をインストールした時点で、すでにグローバル・アセンブリ・キャッシュ(GAC)に「Microsoft.VisualBasic.PowerPacks.Printing.Printer.dll」が登録されているため、[.NET]タブの一覧で「Microsoft.VisualBasic.PowerPacks.Printing.Printer」を選択できる。 |
(2)名前空間のインポート
Printer Compatibility Library 1.0で提供されるPrinterクラスや定数などは、「Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6名前空間」に存在します。毎回この名前空間を宣言するのはちょっと現実的でありませんので、下記のようにファイルの先頭でImportsステートメントを使って名前空間をインポートしておきます。
|
|
Importsステートメントを使った名前空間のインポート |
(3)Printerオブジェクトの作成
インポートした名前空間に存在するPrinterクラスから、オブジェクトを生成します。オブジェクトの名前は何でもかまいませんが、VB 6のコードをできるだけ修正しないようにしたいのであれば、「Printer」という名前で宣言するのがよいでしょう。今回は、ボタンのClickイベント・ハンドラであるPrintButton_Clickメソッド内で宣言することにします。
|
|
「Printer」という名前でPrinterクラスのオブジェクトを生成 |
(4)VB 6のコードをコピーする
リスト1のVB 6のコードで、Withステートメントの始まりから終わりまでの部分をそのままコピーして、PrintButton_Clickメソッド内に貼り付けます。
ただし、まったくそのままのVB 6のコードですといくつかエラーとなってしまう個所がありますので、下記の内容に該当する部分は適宜修正する必要があります。
・カッコ書きやハイフンを使ったパラメータが指定されているVB 6のメソッド
以下のようなカッコ書きやハイフンを使ったパラメータは、それぞれの値を別々のパラメータとして指定するように書き換えます。
|
||||
書き換え例 | ||||
・Bオプション、Fオプションが指定されているVB 6のメソッド
VB 6でのBオプションとFオプションのパラメータは、Printer Compatibility Library 1.0ではメソッドのパラメータとして指定します。以下の例のように各パラメータでTrueを指定すれば、それぞれのオプションを指定した場合と同じ動作となります。
|
||||
書き換え例 | ||||
・Printerオブジェクトとは直接関係のない関数などが使われている場合
Printer Compatibility Library 1.0で提供されるのは、あくまでPrinterオブジェクトに直接関係するメンバだけですので、それとは直接関係のない関数などについては、対応する.NETのメンバに書き換える必要があります。
|
||||
書き換え例 | ||||
LoadPicture関数をBitmapクラスのコンストラクタ呼び出しに書き換えている。 |
なお、メソッドやプロパティのリファレンスを含め、Printer Compatibility Library 1.0に関するすべてのドキュメントは以下のフォルダにある「Printer Compatibility Library Help.htm」に集約されています。
\Program Files
\Microsoft Visual Basic 2005 Power Packs
\Printing\Printer\Documentation
以上の修正を反映したコードが下記のリスト3になります。
|
|
リスト3 Printer Compatibility Library 1.0を利用したVB 2005のコード | |
リスト1のVB 6のコードを基に、Printer Compatibility Library 1.0を使ってVB 2005用に修正したもの |
参考までに、このPrinter Compatibility Library 1.0を使ったコードの印刷結果も掲載しておきます。
図5 リスト3のVB 2005プログラムの実行結果 |
「Microsoft Office Document Image Writer」を通常使うプリンタに設定し、リスト3のコードで印刷される内容をプレビューさせたもの。左側が1ページ目で、右側が2ページ目となっている。 |
Printer Compatibility Library 1.0には、DrawWidthプロパティが1よりも大きい値の場合にはDrawStyleプロパティの値にかかわらずすべて実線で描画されるといった制限も存在するため、VB 6の印刷結果(図1)とまったく同じになっているわけではありません。しかしながら、VB 6のコードをわずかに手直しするだけでほぼ同じ内容の印刷プログラムをVB 2005で再現することができるというのは、非常に魅力的ではないでしょうか。
■
以上、今回はVB 2005のPrintDocumentコンポーネントを使った印刷方法、ならびにVB 6のPrinterオブジェクトを使った印刷プログラムの資産を活用するのに役立つPrinter Compatibility Library 1.0をご紹介しました。これら2つのアプローチを、プロジェクトによって使い分けていくというのが良い選択といえそうです。
Visual Basic 2005 Power Packsには、VB 6のPrintFormメソッドを再現してくれる「PrintForm Component 1.0」など、Printer Compatibility Library 1.0以外にも便利なツールが提供されています。興味のある方はぜひ試してみてください。では、次回をお楽しみに。
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 -