接続されたプリンタドライバの影響を受けることなく、設定されたプリンタのプロパティに従ってレポートを作成するには?
対象製品
ActiveReports 2.0J Professional
詳細
仮想プリンタを使用してレポートの作成を行うことで、特定のプリンタドライバに依存しないレポートを作成することができます。この方法は、不特定多数のプリンタで印刷される可能性がある ASP アプリケーションの場合に有効です。
仮想プリンタとは、DeviceName プロパティの値を空文字列( "" )に設定することで、接続されたプリンタドライバの影響を受けることなく設定された Printer オブジェクトのプロパティに従ってレポートを生成するものです。ただし、レポートを生成することはできても、プリンタ側でサポートされていない用紙に印刷することはできませんので、予めご注意ください。
設定は ActiveReport_Initialize イベントではなく、ReportStart イベントで行うようにしてください。Initialize イベントは ActiveReports で用意しているイベントではなく、Window オブジェクトのイベントになります。 ActiveReport_Initialize イベントはレポートオブジェクトのインスタンス生成時にしか発生しない為、レポート生成が再実行される場合等に対応することができません。
サンプルコード
仮想プリンタとは、DeviceName プロパティの値を空文字列( "" )に設定することで、接続されたプリンタドライバの影響を受けることなく設定された Printer オブジェクトのプロパティに従ってレポートを生成するものです。ただし、レポートを生成することはできても、プリンタ側でサポートされていない用紙に印刷することはできませんので、予めご注意ください。
設定は ActiveReport_Initialize イベントではなく、ReportStart イベントで行うようにしてください。Initialize イベントは ActiveReports で用意しているイベントではなく、Window オブジェクトのイベントになります。 ActiveReport_Initialize イベントはレポートオブジェクトのインスタンス生成時にしか発生しない為、レポート生成が再実行される場合等に対応することができません。
サンプルコード
Dim savePrinter As String
Private Sub ActiveReport_ReportStart()
savePrinter = Me.Printer.DeviceName
Me.Printer.DeviceName = "" '仮想プリンタの利用
With Me.PageSettings
.PaperSize = vbPRPSB4
.Orientation = ddOLandscape
.LeftMargin = 720
.TopMargin = 720
.RightMargin = 720
.BottomMargin = 720
Me.PrintWidth = Me.Printer.PaperWidth - _
(.LeftMargin + .RightMargin)
End With
End Sub
Private Sub ActiveReport_ReportEnd()
'設定を元に戻す
Me.Printer.DeviceName = savePrinter
End Sub
Private Sub ActiveReport_ReportStart()
savePrinter = Me.Printer.DeviceName
Me.Printer.DeviceName = "" '仮想プリンタの利用
With Me.PageSettings
.PaperSize = vbPRPSB4
.Orientation = ddOLandscape
.LeftMargin = 720
.TopMargin = 720
.RightMargin = 720
.BottomMargin = 720
Me.PrintWidth = Me.Printer.PaperWidth - _
(.LeftMargin + .RightMargin)
End With
End Sub
Private Sub ActiveReport_ReportEnd()
'設定を元に戻す
Me.Printer.DeviceName = savePrinter
End Sub
関連情報
キーワード
HowTo Web
この文書は、以前は次のFAQ IDで公開されていました : 3453