VB.net : 印刷サンプルスケルトン

  VS2008/VB.net プロジェクトのダウンロード



ブラウザでダウンロード

ソースコード

1) Form1.vb
	Public Class Form1
	メインフォームの処理

2) print.vb
	Partial Class Form1
	印刷プレビューダイアログの設定

3) print_doc.vb
	Partial Class Form1
	印刷処理	

印刷処理とは直接関係ありませんが、メニューとステータスバーを付加して、
イベントを他の場所から呼び出すサンプルにしてあります。

print.vb では、印刷プレビューダイアログのデフォルトの印刷ボタンだと、
クリック後すぐ印字処理になるので、プリンタを選択できるように改造してい
ます。

print_doc.vb は、実際の印刷処理ですが、マージンを使って印刷領域
にラインを引いており、内部に行と x 座標で文字列を2箇所印字しています。

Print_sample




  print_doc.vb



Partial Class Form1

	' 印刷用オブジェクトと変数
	Private pf As Font = New Font("MS 明朝", 12)
	Private prContext As System.Drawing.Graphics
	Private topMargin As Integer
	Private leftMargin As Integer

	' ******************************************************
	' 実際の印刷処理
	' ******************************************************
	Private Sub pd_PrintPage(ByVal sender As System.Object, _
	ByVal e As System.Drawing.Printing.PrintPageEventArgs)

		' 左側余白
		leftMargin = e.MarginBounds.Left
		' 上側余白
		topMargin = e.MarginBounds.Top
		' 現在のコンテキストを取得
		prContext = e.Graphics

		' 上部上限ライン
		prContext.DrawLine( _
		 Pens.Black, _
		 leftMargin, _
		 topMargin, _
		 leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
		 topMargin _
		 )

		' 左側ライン
		prContext.DrawLine( _
		 Pens.Black, _
		 leftMargin, _
		 topMargin, _
		 leftMargin, _
		 topMargin + (e.PageBounds.Height - 2 * topMargin) _
		 )

		' 右側ライン
		prContext.DrawLine( _
		 Pens.Black, _
		 leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
		 topMargin, _
		 leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
		 topMargin + (e.PageBounds.Height - 2 * topMargin) _
		 )

		' 下部下限ライン
		prContext.DrawLine( _
		 Pens.Black, _
		 leftMargin, _
		 topMargin + (e.PageBounds.Height - 2 * topMargin), _
		 leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
		 topMargin + (e.PageBounds.Height - 2 * topMargin) _
		 )

		PrString(10, 100, "日本語表示")
		PrString(1, 0, "日本語表示")

		' 次のページがある場合は、True
		' ここでは、1行印字して終わり
		e.HasMorePages = False


	End Sub

	' ******************************************************
	' 文字列を指定行の先頭から印字
	' ******************************************************
	Private Sub PrString(ByVal row As Integer, ByVal x As Integer, ByVal str As String)

		Dim yPos As Integer = 0
		' フォントの高さで一行の高さを決定
		yPos = topMargin + (row - 1) * pf.GetHeight(prContext)
		' 印字可能な左端から文字列をセットする
		prContext.DrawString(str, pf, Brushes.Black, leftMargin + x, yPos)

	End Sub

End Class



関連する記事

VB.NET : 印刷(2)
VB.NET : 印刷(3)
【VB.NET】印刷処理サンプル




  print.vb

Partial Class Form1

	' 印刷処理の実体の定義
	Private pd As System.Drawing.Printing.PrintDocument = New System.Drawing.Printing.PrintDocument

	' プリンタ選択ダイアログ
	Private prtDialog As PrintDialog = New PrintDialog()

	' **********************************************
	' 印刷プレビューの初期化
	' **********************************************
	Private Sub 印刷プレビューダイアログ_Load( _
	ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles 印刷プレビューダイアログ.Load

		' デスクトップ左上
		印刷プレビューダイアログ.DesktopLocation = New System.Drawing.Point(0, 0)

		' 印刷ドキュメント設定
		Me.印刷プレビューダイアログ.Document = pd

		' =====================================================
		' ここから印刷ボタンの改造
		' =====================================================
		' 現在の印刷アイコンを取得
		Dim tool As ToolStrip = 印刷プレビューダイアログ.Controls(1)
		Dim img As System.Drawing.Image = tool.Items(0).Image

		' 新しいツールバー用ボタンを作成
		Dim ToolStripButton1 As New System.Windows.Forms.ToolStripButton()
		ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
		' 取得したイメージをセット
		ToolStripButton1.Image = img
		ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
		ToolStripButton1.Name = "ToolStripButton1"
		ToolStripButton1.Size = New System.Drawing.Size(23, 22)
		ToolStripButton1.Text = "プリンタ選択"
		' 現在の印刷ボタンを削除
		tool.Items.RemoveAt(0)
		' 新しい印刷ボタンを追加
		tool.Items.Insert(0, ToolStripButton1)
		' ボタンにイベント登録
		AddHandler ToolStripButton1.Click, AddressOf print_start
		' =====================================================
		' ここまで( 印刷ボタンの改造 )
		' =====================================================

		' プリンタ選択ダイアログの設定
		prtDialog.PrinterSettings = New System.Drawing.Printing.PrinterSettings()
		prtDialog.Document = pd

	End Sub

	' ******************************************************
	' 印刷ボタンの処理
	' ******************************************************
	Private Sub print_start(ByVal sender As System.Object, _
	  ByVal e As System.EventArgs)

		If prtDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
			pd.Print()
		End If

	End Sub

End Class



関連する記事

VB.NET : 印刷(1)
PrintPreviewDialog のツールバーの印刷ボタンでプリンタ選択を可能にする





  Form1.vb

Public Class Form1

	' **********************************************
	' 印刷_Click を呼び出すメニュー
	' **********************************************
	Private Sub 印刷開始_MenuItem_Click( _
	ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles 印刷開始_MenuItem.Click

		Call 印刷_Click(Me.印刷, e)

	End Sub

	' **********************************************
	' 通常の開始ボタン
	' **********************************************
	Private Sub 印刷_Click( _
	ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles 印刷.Click

		' デバッグ出力
		Console.WriteLine(CType(sender, Button).Name)
		Console.WriteLine(e.ToString)

		' 印刷プレビュー開始
		Me.印刷プレビューダイアログ.ShowDialog()

	End Sub

	' **********************************************
	' 初期処理
	' **********************************************
	Private Sub Form1_Load( _
	ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles MyBase.Load

		' 1) ステータスバーへメッセージ
		' ( 呼び出し先で引数を使わないので Nothing を使用 )
		Call 印刷_MouseLeave(Nothing, Nothing)

		' 2) 印刷イベントの登録
		' 印刷イベントをプレビューから呼び出せるように登録する
		AddHandler pd.PrintPage, AddressOf pd_PrintPage

	End Sub


	' **********************************************
	' マウス位置によるメッセージの変化
	' **********************************************
	Private Sub 印刷_MouseEnter( _
	ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles 印刷.MouseEnter

		Me.ステータス.Text = "クリックして下さい"

	End Sub

	Private Sub 印刷_MouseLeave( _
	ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles 印刷.MouseLeave

		Me.ステータス.Text = "印刷処理サンプルです"

	End Sub

End Class













  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ