合計請求書(請求書の表紙)を印刷する簡単なプログラムに手を入れる(その1)

ちょっと脇道にそれまして...で作成したプログラムに少し手をいれることになった。

今回は
・印刷の位置を調整できるようにする
です。

まず調整値を設定するフォームを作成する。

作成したフォームにコードを書く
  Public Class Form印刷余白設定
  
    Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      AddHandler Me.FormClosing, AddressOf CommonLib.Form_FormClosing
  
      AddHandler tb余白_上.Enter, AddressOf CommonLib.tb_Enter
      AddHandler tb余白_左.Enter, AddressOf CommonLib.tb_Enter
      AddHandler tb余白_上.Leave, AddressOf CommonLib.tb_Leave
      AddHandler tb余白_左.Leave, AddressOf CommonLib.tb_Leave
  
      AddHandler tb余白_上.Validating, AddressOf CommonLib.tb_Validating_Decimal
      AddHandler tb余白_左.Validating, AddressOf CommonLib.tb_Validating_Decimal
    End Sub
  
    Private Sub Form印刷余白設定_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
      tb余白_左.Text = My.Settings.余白_左
      tb余白_上.Text = My.Settings.余白_上
  
      tb余白_上.Focus()
    End Sub
  
    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
      My.Settings.余白_左 = tb余白_左.Text
      My.Settings.余白_上 = tb余白_上.Text
  
      My.Settings.Save()
      Me.Close()
    End Sub
  
    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
      Me.Close()
    End Sub
  End Class
あと前回書いた帳票を印刷するコードも修正する
  Private Sub 出力_合計請求書()
    '-----和暦の処理-----
    Dim Japan As New System.Globalization.JapaneseCalendar
    '--------------------

    '-----ルート名前空間を取得する-----
    '埋め込まれたリソース(印刷用レイアウトファイル)を利用するために必要
    Dim AppNameSpace As String
    Dim type As System.Type
    type = Me.GetType()
    AppNameSpace = type.Namespace
    Dim EmbedFileName As String = AppNameSpace & ".PrintForm.xls"
    '----------------------------------

    Dim rptCtrl As New VBReport.XlsReportCtrl.XlsReportCtrl
    Dim srmExcelFile As System.IO.Stream = Nothing

    Dim str出力プリンタ As String = ""

    Try
      '印刷用Layout定義
      rptCtrl.CtrlMode = VBReport.XlsReportCtrl.xlCtrlMode.cmHide
      rptCtrl.Option.ExcelMode = True
      rptCtrl.Printer.ColorMode = True
      rptCtrl.Option.ProgressDialog = False

      '埋め込まれたリソースの使用
      Dim asmExcelFile As System.Reflection.Assembly
      asmExcelFile = System.Reflection.Assembly.GetExecutingAssembly
      srmExcelFile = asmExcelFile.GetManifestResourceStream(EmbedFileName)

      'プリンタ設定
      If rptCtrl.Option.SetPrinter(True, "") = False Then
        Exit Sub
      End If

      'ページを開始
      rptCtrl.Start.Embed(srmExcelFile)
      rptCtrl.Page.Begin("合計請求書", "1")

      '-----ページ余白の設定-----
      Dim 余白_左 As Integer
      If Not Integer.TryParse(My.Settings.余白_左, 余白_左) Then
        余白_左 = 0
      End If

      Dim 余白_上 As Integer
      If Not Integer.TryParse(My.Settings.余白_上, 余白_上) Then
        余白_上 = 0
      End If

      rptCtrl.Page.Attr.Margin(余白_左, 0, 余白_上, 0, 0, 0)
      '--------------------------

      If cb月限.Text.Length = 0 Then
        '何もしない
      Else
        rptCtrl.Cell("D3").Value = " " & cb月限.Text & "月限"
      End If

      rptCtrl.Cell("AZ3").Value = "平成 " & Japan.GetYear(dtp発行日.Value) & " 年 " & dtp発行日.Value.Month.ToString.PadLeft(2) & " 月 " & dtp発行日.Value.Day.ToString.PadLeft(2) & " 日"

      rptCtrl.Cell("D5").Value = tb1行目.Text & vbNewLine & tb2行目.Text

      rptCtrl.Cell("P10").Value = "\" & CDec(tb今回請求金額.Text).ToString("#,##0") & ".-"

      '印刷する
      rptCtrl.Page.End()
      rptCtrl.Out.DoPrint("合計請求書")

    Catch ex As Exception
      MsgBox(ex.Message)
    Finally
      rptCtrl.Dispose()

      ' 読み込んだリソースを閉じる
      srmExcelFile.Close()
    End Try

  End Sub

修正(追加)したのは'-----ページ余白の設定-----のあたりのコード

このシリーズ、もう少し続きそうです。