tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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. これにて印刷処理が完了し、プレビューあるいはプリンタ出力が行われる。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。