VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 ダイアログボックス関係のメニュー
1.[色の設定]ダイアログボックスの使用方法
2.[フォルダーの参照]ダイアログボックスの使用方法
3.ファイルを[開く]ダイアログボックスの使用方法
4.[名前を付けて保存]ダイアログボックスの使用方法
5.[フォント]ダイアログボックスの使用方法
6.[ページ設定]ダイアログボックスの使用方法
7.[印刷プレビュー]ダイアログボックスの使用方法
8.[印刷]ダイアログボックスの使用方法
9. 
10. 
11.
12.
 . 
20.その他、当サイト内に掲載のダイアログボックスに関するサンプル 


7.[印刷プレビュー]ダイアログボックスの使用方法(28_Dai_07) (旧、SampleNo.055)
1.[印刷プレビュー]のダイアログボックスの表示と各種表示設定方法
2.[印刷プレビュー]のダイアログボックスの表示に関する付帯設定
3.上記実行図及び使用コントロールと配置図(参考)
4.
5.
6.
 [ページ設定] 及び[印刷プレビュー] 及び [印刷] のダイアログも同時に使用する事になりますのでそちらの設定も合わせてご覧下さい。
 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :System.Drawing.Printing
参照設定:
追加なし
使用コン:Button1Button4 / TextBox4 / PictureBox1 配置図参照
トロール:
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.[印刷プレビュー]のダイアログボックスの表示と各種表示設定方法

Private WithEvents PrintDocument1 As New Printing.PrintDocument

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Call sPrintPreview(PrintDocument1)
End Sub

Public Sub sPrintPreview(ByRef printDoc As PrintDocument)
'[印刷プレビュー]のダイアログボックスの表示位置と大きさを設定
    'PrintPreviewDialog クラスのインスタンスを作成(ツールボックスから貼り付ける場合は必要ありません)
    Dim PrintPreviewDialog1 As New PrintPreviewDialog
    With PrintPreviewDialog1
        '★印刷設定情報をタイトルに表示
        .Text = GetPageSet(printDoc)
        'プレビューするドキュメントを設定
        .Document = printDoc

        '★印刷プレビューの画面の[印刷]のボタンを非表示にする場合 False
        Dim ts As ToolStrip = TryCast(.Controls("toolStrip1"), ToolStrip)
        If ts IsNot Nothing Then
            ts.Items("printToolStripButton").Visible = True
        End If

        '★表示位置を設定
        .StartPosition = FormStartPosition.Manual
        .Location = New Point(5, 5)

        '★表示するダイアログの大きさを設定する
        .Size = New Size(550, 650)  'A4 の全体画像が表示できる

        '★印刷プレビューの表示倍率を指定
        .PrintPreviewControl.Zoom = 0.5
        Dim tsb As ToolStripSplitButton = DirectCast(ts.Items!zoomToolStripSplitButton, ToolStripSplitButton)
        '自動のチェックマークを非表示に
        DirectCast(tsb.DropDownItems(0), ToolStripMenuItem).Checked = False
        '50% のところにチェックマークを表示
        DirectCast(tsb.DropDownItems(6), ToolStripMenuItem).Checked = True

        '[印刷プレビュー]のダイアログボックスを表示
        .ShowDialog()
    End With
End Sub

このページのトップへ移動します。 2.[印刷プレビュー]のダイアログボックスの表示に関する付帯設定

Public Function GetPageSet(ByRef printDoc As PrintDocument) As String
    With printDoc
        Dim paperSize As String = .DefaultPageSettings.PaperSize.Kind.ToString()
        Dim landscape As String = "縦"
        If .DefaultPageSettings.Landscape = True Then
            landscape = "横"
        End If
        Dim copies As String = .PrinterSettings.Copies.ToString()
        Dim margins As String = String.Format("左={0} 右={1} 上={2} 下={3}", _
            CInt(.DefaultPageSettings.Margins.Left * 0.254), _
            CInt(.DefaultPageSettings.Margins.Right * 0.254), _
            CInt(.DefaultPageSettings.Margins.Top * 0.254), _
            CInt(.DefaultPageSettings.Margins.Bottom * 0.254))
        Dim printerName As String = .PrinterSettings.PrinterName
        GetPageSet = String.Format("{0} 用紙サイズ {1} / {2} 印刷部数={3} 余白 {4}", _
                    printerName, paperSize, landscape, copies, margins)
    End With
End Function

Private Sub PrintDocument1_PrintPage(sender As Object, _
                    e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'各ダイアログの設定値の確認ためのテスト印刷処理(適当になにか設定しておいて下さい。)

    '印刷余白(印刷開始位置)を取得(.NET Framework version 2.0 からの機能です)
    '仮に、左余白を 0 mm に設定しても実際にプリンターでの印刷開始位置は、実用紙上では
    'HardMarginX の値からの印刷開始となります。
    '従って、左余白 = 10 mm の設定であれば、(10 - HardMarginX)の位置から印刷する必要がある
    'こちらは、1/100 インチ単位での設定となります。

    '実用紙での左端からの余白位置
    Dim inchLM As Single = e.MarginBounds.Left - e.PageSettings.HardMarginX
    '実用紙での上端からの余白位置
    Dim inchTM As Single = e.MarginBounds.Top - e.PageSettings.HardMarginY

    'PictureBox1.Image の印刷設定
    Using myPic As New Bitmap(PictureBox1.Image)
        '指定の位置から画像のサイズ(Pixel単位)で印刷
        Dim rect As New RectangleF(inchLM, inchTM, myPic.Width, myPic.Height)
        e.Graphics.DrawImage(myPic, rect)
    End Using

    'テキストの印刷設定
    'mm 単位でのプリンター独自の印刷余白
    '実用紙での左端からのプリンター独自の印刷開始位置
    Dim mmLM As Integer = CInt(0.254! * e.PageSettings.HardMarginX)
    '実用紙での上端からのプリンター独自の印刷開始位置
    Dim mmTM As Integer = CInt(0.254! * e.PageSettings.HardMarginY)
    Using g As Graphics = e.Graphics
        'ミリメートルを長さの単位に指定します。
        g.PageUnit = GraphicsUnit.Millimeter
        Using myFont As New System.Drawing.Font("MS Pゴシック", 12)
            Using myBrush As New SolidBrush(ColorTranslator.FromOle(RGB(255, 0, 0)))
                g.DrawString("■ 左から 35mm 上から 20mm の位置に印刷しました。", myFont, myBrush, 35 - mmLM, 20 - mmTM)
            End Using
            'テキストボックスの内容を印刷する場合、つづいて左から20mm 上から30mm の位置に印刷します
            g.DrawString(TextBox1.Text, myFont, Brushes.Blue, 20 - mmLM, 30 - mmTM)
        End Using
    '今回は、印刷設定が主題ではないので複数ページの印刷等には対応していない。
    End Using
End Sub

このページのトップへ移動します。 3.上記実行図及び使用コントロールと配置図

 図1.上記実行図及び使用コントロールと配置図
vb2013dailog07_1

このページのトップへ移動します。 4.


このページのトップへ移動します。 5. 



このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
ダイアログボックス  Dialog Box




このページのトップへ移動します。