タイトル : Re^5: VB.NETの印刷の改ページ処理 投稿日 : 2006/03/15(Wed) 10:25 投稿者 : 魔界の仮面弁士
> 私の場合(VB5.0なのですが)、まず、 : > Private Sub タイトル印刷() > Yoko = 40 > Tate = 560 > v e.Graphics.DrawImage(img, Yoko, Tate) > End Sub : あれ? とても VB5 の構文には見えないのですが……。(^^; もし、VB5 ではなく VB.NET の間違いだったとしても、この e.Graphics が、 どこからどのように渡されているのかといった、肝心な情報が抜け落ちている気が。 > VB.NETでこれをすると : > Dataが200個有れば200カ所書くことになり、実際はもっと複雑なのですごい行数になります。 Data_1 や Data_2 が何を意味するのか分かりませんでしたが、この場合は、 Private Sub PrintDocument1_PrintPage(・・・ ページ番号 += 1 Call タイトル印刷(e) Call 明細印刷(e, ページ番号) End Sub というイメージで処理できませんか? (ページ番号ではなく、出力する座標位置で管理しても良いですけど) > PrintDocumentは、いくつも貼り付ける事ができるので、タイトル印刷・明細印刷を > それぞれ PrintDocument1・PrintDocument2 にして それだと、方向性が間違っています。 ページが複数あっても、文書としては一つなので、PrintDocument 自体は一つしか使いません。 「PrintDocument」とは、その名の通り、印刷対象となる『文書(ドキュメント)』を表すものであって、 印刷対象となる個々の『ページ』を表すものでは無い事に注意してください。 各ページの処理は、それぞれの文書(PrintDocumentクラス)内の、 ページごとの印刷処理(PrintPageイベント)に記述する事になります。 たとえば、3ページ分の印刷が必要な場合、処理の流れとしてはこうなります。 (使用する PrintDocument クラスは、一つだけです) 1. 印刷処理の開始 ← PrintPreviewDialog1.Show() や PrintDocument1.Print() など。 2. PrintPage イベントが発生 → タイトルと、1ページ目の印刷処理を実行した後、 e.HasMorePages = True にして、イベントプロシージャを抜ける 3. PrintPage イベントが再発生 → タイトルと、2ページ目の印刷処理を実行した後、 e.HasMorePages = True にして、イベントプロシージャを抜ける 4. PrintPage イベントが再々発生 → タイトルと、3ページ目の印刷処理を実行した後、 e.HasMorePages = False にして、イベントプロシージャを抜ける 5. これにて印刷処理が完了し、プレビューあるいはプリンタ出力が行われる。 |