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

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


6.[ページ設定]ダイアログボックスの使用方法(28_Dia_06) (旧、SampleNo.056)
1.印刷するまでの印刷設定の概略の流れ
2.[ページ設定]ダイアログを使ってページ関連の印刷設定をユーザーが変更できるようにする
3.PageSettings 等の印刷関係の設定値の設定状況を取得(参考)
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.印刷するまでの印刷設定の概略の流れ

1.印刷設定で用紙サイズや印刷時の用紙の向き等をユーザーに選択させる場合は、[ページ設定]ダイアログボックス等を表示してユーザーに
  選択してもらう必要があります。

2.[ページ設定]ダイアログボックスでユーザーが選択・設定した内容を[PrintDocument1_PrintPage イベント]等に記入する印刷設定に反映
  させる必要があります。

3.[ページ設定]ダイアログボックスでの設定値を印刷設定や印刷プレビュー画面に反映させるには設定値を記録しておく必要があります。

4.設定値を記録保存するには、PageSettings クラス等を使用します、ここでは、PrintDocument クラスの DefaultPageSettings
  プロパティに保存するようにして簡略化を図っております。
  PageSettings クラスやでは、DefaultPageSettings プロパティでは、下記のようなプロパティが用意されていて、取得や設定する事が
  できます。

参考、私の通常使うプリンターでの Default の設定値の取得結果です。
下記の PageSettings 等の印刷関係の設定値の設定状況を取得で取得確認できますので各自の環境で確認して見て下さい。
プロパティ名 私の環境での Default の設定値 プロパティの説明
Bounds {X=0,Y=0,Width=827,Height=1169} Landscape プロパティで指定した用紙方向が考慮された、ページのサイズを取得します。単位は、1/100 インチです。
827*0.254=210mm /1169*0.254=297mm で A4 サイズである
Color TRUE ページを色付きで印刷するかどうかを示す値を取得または設定します。 TRUE = カラー印刷
HardMarginX 11 ページの左側のハードマージンの x 座標 (1/100 インチ単位) を取得します。 約 3mm
HardMarginY 11 ページの上部のハードマージンの y 座標 (1/100 インチ単位) を取得します。 約 3mm
Landscape FALSE ページの印刷時に用紙を横向きにするか縦向きにするかを示す値を取得または設定します。 横向き= True。縦向き= False
Margins [Margins Left=100 Right=100 Top=100 Bottom=100] このページの余白を取得または設定します。
Default = 各マージンは1インチ(100/100)
PaperSize [PaperSize A4 210 x 297 mm Kind=A4 Height=1169 Width=827] ページの用紙サイズを取得または設定します。
PaperSource [PaperSource オートシートフィーダ Kind=AutomaticFeed] ページの給紙方法を取得または設定します (たとえば、プリンターの上段トレイ)。
PrintableArea {X=11.66667,Y=11.66667,
Width=803.3333,Height=1145.833}
プリンターのページの印刷可能領域の範囲を取得します。
HardMargin の部分を除いた部分になります。
803.3+11.67.11.67=826.6(Width=827)
PrinterResolution [PrinterResolution X=720 Y=720] ページのプリンター解像度を取得または設定します。
PrinterSettings [PrinterSettings EPSON PM-A840 Copies=1 Collate=False Duplex=Simplex FromPage=0 LandscapeAngle=270 MaximumCopies=9999 OutputPort= ToPage=0] ページに関連するプリンター設定を取得または設定します。

 太字
のプロパティは、[ページ設定]のダイアログボックスで、ユーザーが直接変更できる部分です。

5.[ページ設定]のダイアログボックスを表示する前に、PageSetupDialog1.PageSettings = PrintDocument1.DefaultPageSettings のように
  して[ページ設定]のダイアログボックスに PageSettings の設定値を反映させておく必要があります。

6.[ページ設定]のダイアログボックスでユーザーが設定を変更した部分を .DefaultPageSettings に反映させておきます。

8.印刷余白や印刷方向や印刷の状態を確認するには、[印刷プレビュー]ダイアログボックスを使用します。

9.[印刷プレビュー]ダイアログボックスを表示する前に、PrintPreviewDialog1.Document = PrintDocument1 のように反映させておくと、
  これまでの設定値が反映された状態の印刷プレビュー画面が表示されます。

10.ここまでの流れをみたら解るように、設定値をきちんと反映させるようにしないと Default の設定値で印刷してしまう事になります。
  (いきなり、印刷プレビュー画面を表示して、印刷プレビューの画面から印刷した場合等)

11.従って、ここでは[印刷プレビュー]ダイアログボックスのタイトル部分に設定値の主要内容を表示するようにしています。

12.上記の部分等でユーザーが設定できない、印刷設定は、[印刷]ダイアログボックスを使って設定してもらいます。

13.ここでも、[印刷]ダイアログボックスを表示する前に、PrintDialog1.Document = PrintDocument1 のようにして反映させてから表示し、
  [OK]ボタンがおされたら、PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings のようにして設定値を反映させてから、
  [印刷プレビュー]ダイアログボックスを表示し、ユーザーに設定値が反映されている事を確認してもらってから印刷するようにしています。

  現状では、[印刷]ダイアログボックスの印刷のボタンをクリックしないと印刷できない設定にしています。
  (ユーザーが設定値を目で確認してからでないと印刷出来ないのでミスプリントが少なくなるかと思います。)

14.以上の設定をするには、[印刷プレビュー]のダイアログボックス[印刷]ダイアログボックスを使用する事になりますので、そちらの
  設定方法も合わせてご覧下さい。

お断り、ここの掲載は、ダイアログボックス関係の掲載が主題となっておりますので、印刷設定関係は、[印刷関係]の方をご覧下さい。
但し、[印刷関係]の方で掲載している印刷関係のダイアログボックス関係の設定方法は、古いコードのままになっているかも知れませんので、
こちらの方を参考にして下さい。

このページのトップへ移動します。 2.[ページ設定]ダイアログを使ってページ関連の印刷設定をユーザーが変更できるようにする

Public WithEvents PrintDocument1 As New PrintDocument

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    '[ページ設定]ダイアログの表示・設定へ
    Call sPageSetting(PrintDocument1)
End Sub

Public Sub sPageSetting(ByRef printDoc As PrintDocument)
'[ページ設定]ダイアログを使ってページ関連の印刷設定をユーザーが変更できるようにする
    'ダイアログの表示時の単位は、mm なので mm に変換して表示
    With printDoc.DefaultPageSettings.Margins
        '1/100 インチ単位 なので mm 変換して設定
        .Left = CInt(.Left * 2.54 / 10) * 10
        .Top = CInt(.Top * 2.54 / 10) * 10
        .Right = CInt(.Right * 2.54 / 10) * 10
        .Bottom = CInt(.Bottom * 2.54 / 10) * 10
    End With

    'PageSetupDialog クラスのインスタンスを作成(ツールボックスから貼り付ける場合は必要ありません)
    Dim PageSetupDialog1 As New PageSetupDialog
    '[ページ設定]ダイアログの設定値に、printerPageSetting.Margins の設定値を反映
    PageSetupDialog1.PageSettings = printDoc.DefaultPageSettings
    'ページ設定ダイアログの設定 OK ボタンがクリックされたらプレビュー表示
    If PageSetupDialog1.ShowDialog() = DialogResult.OK Then
        'ここで、PrintDocument にも同様に反映させておくと印刷プレビューの表示にも反映される
        printDoc.DefaultPageSettings = PageSetupDialog1.PageSettings
        '印刷プレビューの表示へ(お好みで)
        Call sPrintPreview(printDoc)
    Else
        'キャンセルした場合は、元に(インチ)戻す
        With printDoc.DefaultPageSettings.Margins
            .Left = CInt(.Left * 0.394)
            .Top = CInt(.Top * 0.394)
            .Right = CInt(.Right * 0.394)
            .Bottom = CInt(.Bottom * 0.394)
        End With
    End If
    PageSetupDialog1.Dispose()
End Sub

このページのトップへ移動します。 3.PageSettings 等の印刷関係の設定値の設定状況を取得

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'ご自分の環境でどのように設定されているのか確かめて見て下さい。
    With PrintDocument1.PrinterSettings
        Console.WriteLine("CanDuplex          = {0}", .CanDuplex)
        Console.WriteLine("Collate            = {0}", .Collate)
        Console.WriteLine("Copies             = {0}", .Copies)
        Console.WriteLine("Duplex             = {0}", .Duplex)
        Console.WriteLine("FromPage           = {0}", .FromPage)
        Console.WriteLine("IsDefaultPrinter   = {0}", .IsDefaultPrinter)
        Console.WriteLine("IsPlotter          = {0}", .IsPlotter)
        Console.WriteLine("IsValid            = {0}", .IsValid)
        Console.WriteLine("LandscapeAngle     = {0}", .LandscapeAngle)
        Console.WriteLine("MaximumCopies      = {0}", .MaximumCopies)
        Console.WriteLine("MaximumPage        = {0}", .MaximumPage)
        Console.WriteLine("MinimumPage        = {0}", .MinimumPage)
        Console.WriteLine("PaperSizes         = {0}", .PaperSizes)
        Console.WriteLine("PaperSources       = {0}", .PaperSources)
        Console.WriteLine("PrinterName        = {0}", .PrinterName)
        Console.WriteLine("PrinterResolutions = {0}", .PrinterResolutions)
        Console.WriteLine("PrintFileName      = {0}", .PrintFileName)
        Console.WriteLine("PrintRange         = {0}", .PrintRange)
        Console.WriteLine("PrintToFile        = {0}", .PrintToFile)
        Console.WriteLine("SupportsColor      = {0}", .SupportsColor)
        Console.WriteLine("ToPage             = {0}", .ToPage)
    End With

    Console.WriteLine("")
    Console.WriteLine("")

    'With printerPageSetting
    With PrintDocument1.DefaultPageSettings
        Console.WriteLine("Bounds            = {0}", .Bounds)
        Console.WriteLine("Color             = {0}", .Color)
        Console.WriteLine("HardMarginX       = {0}", .HardMarginX)
        Console.WriteLine("HardMarginY       = {0}", .HardMarginY)
        Console.WriteLine("Landscape         = {0}", .Landscape)
        Console.WriteLine("Margins           = {0}", .Margins)
        Console.WriteLine("PaperSize         = {0}", .PaperSize)
        Console.WriteLine("PaperSize.Kind    = {0}", .PaperSize.Kind.ToString)
        Console.WriteLine("PaperSource       = {0}", .PaperSource)
        Console.WriteLine("PrintableArea     = {0}", .PrintableArea)
        Console.WriteLine("PrinterResolution = {0}", .PrinterResolution)
        Console.WriteLine("PrinterSettings   = {0}", .PrinterSettings)
    End With

End Sub

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


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



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


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




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