タイトル | : 印刷の改ページ |
記事No | : 3300 |
投稿日 | : 2006/03/16(Thu) 22:36 |
投稿者 | : YAS |
マサノリさんへの具体例です。
初めに申し上げておきますが,以下のコードはあくまでサンプルであって,お手本ではありません。 全然練らないで思いつきでコーティングしているので定数は埋め込まれているなど,かなり適当です。
あくまで,参考程度にしてください。
(このままFormに貼り付ければ動作します。)
Public Class Form1
Private Max As Integer = 255 Private Genka(Max) As Genkahyo Private Index As Integer = 0 Private WithEvents PrintPreviewDialog As New PrintPreviewDialog Private WithEvents PrintDocument As New Printing.PrintDocument
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load '実験のため適当に数値を代入 For i As Integer = 0 To 255 Genka(i).Zairyohi = CInt(Rnd() * 1000) Genka(i).Keihi = CInt(Rnd() * 1000) Genka(i).Kansetsuhi = CInt(Rnd() * 1000) Next Me.PrintPreviewDialog.Document = Me.PrintDocument Me.PrintPreviewDialog.ShowDialog() End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs) _ Handles PrintDocument.PrintPage 'タイトル e.Graphics.DrawString("原価表", New Font("MS ゴシック", 9), Brushes.Black, _ e.MarginBounds.Left, e.MarginBounds.Top) Dim Title As String = " 番号 材料費 経費 間接費" e.Graphics.DrawString(Title, New Font("MS ゴシック", 9), Brushes.Black, _ e.MarginBounds.Left, e.MarginBounds.Top + 20) '明細 For i As Integer = 0 To 49 Dim Idx As Integer = i + Index If Idx > Max Then Exit For Dim Meisai As String = String.Format("{0,6:No\.000}{1,10}{2,10}{3,10}", _ Idx, Genka(Idx).Zairyohi, Genka(Idx).Keihi, Genka(Idx).Kansetsuhi) e.Graphics.DrawString(Meisai, New Font("MS ゴシック", 9), Brushes.Black, _ e.MarginBounds.Left, e.MarginBounds.Top + 15 * i + 40) Next Index += 50 e.HasMorePages = (Index < Max) End Sub
Private Structure Genkahyo Dim Zairyohi As Integer Dim Keihi As Integer Dim Kansetsuhi As Integer End Structure
End Class
|