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

タイトル 印刷の改ページ
投稿日: 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

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

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