QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

ActiveReportsの余白設定について

言語:Microsoft Visual Studio 2008
データベース:SQL Server 2005
ツール:ActiveReports for .NET 3.0J

レポートの用紙サイズや余白を、コード上で動的に設定してます。
しかし、印刷しても期待どおりの余白が設定されません。
余白は上余白1cm、左余白2cmと設定しているのですが、
何故か印刷すると上余白1cm、左余白3cmと左余白だけが1cm多くなってしまいます。

原因がわからず困っています。どなたかご教授お願いします。



<印刷ボタン押下処理>
Public Class frmXXXX
    Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
        Try
            Dim okButtonIsPushed As Boolean
            Dim rpt As DataDynamics.ActiveReports.ActiveReport3
            rpt = New rptXXXX
            Dim RptInfo As New clsReportInfo
            RptInfo.SetMargin(strReportID, rpt)
            rpt.Run()
            Dim DiaInfo As New clsDialogInfo
            okButtonIsPushed = DiaInfo.PrintDialog(strReportID, rpt, True, False, True)
        Catch ex As Exception
            AppErrorHandler(ex)
        End Try
End Class
<用紙サイズや余白設定>
Public Class clsReportInfo
    Public Sub SetMargin(ByVal strReportID As String, ByRef rpt As ActiveReport3)
        Try
            '用紙サイズの設定
            rpt.PageSettings.PaperKind = Printing.PaperKind.A4  'A4
            rpt.PageSettings.Orientation = DataDynamics.ActiveReports.Document.PageOrientation.Portrait '縦
            '余白の設定
            rpt.PageSettings.Margins.Top = ActiveReport3.CmToInch(1.0)     '上余白
            rpt.PageSettings.Margins.Bottom = ActiveReport3.CmToInch(1.0)  '下余白
            rpt.PageSettings.Margins.Left = ActiveReport3.CmToInch(2.0)    '左余白
            rpt.PageSettings.Margins.Right = ActiveReport3.CmToInch(2.0)   '右余白
        Catch ex As Exception
            AppErrorHandler(ex)
        End Try
    End Sub
End Class

質問者:chiroru

回答

かずいといいます。

レポートレイアウトの方で、ページフッタとか設定していないですか?
もし、ページフッタ(レポートフッタもあれば同様かな)の高さ0に設定したら
どうですか?
(たしかプロパティで出力対象なければ、出力しない設定があった気がするけど
忘れてしまいました。)

投稿者:かずい

編集 履歴 (0)

ページフッタはラベルやテキスト等があるため高さ0にはできません。
問題は左余白です。
レポートの設定で上下左右のマージンを0.99に設定しています。
でも、プログラムでここは書き変わる予定だから関係ないですよね?

投稿者:chiroru

編集 履歴 (0)

chiroruさん

すいません。
左余白ですね。下の余白だと思いこんでしまっていました。

左余白が3センチになるっていうのは、印刷された紙を測ったものでしょうか?

投稿者:かずい

編集 履歴 (0)

左余白が3センチになるっていうのは、印刷された紙を測ったものでしょうか?

はいそうです。

投稿者:chiroru

編集 履歴 (0)

chiroruさん

とすると、たしかActiveReportsって、「とじしろ」っていうプロパティを持っていたと
思うのでこれの値を確認してみてください。
この「とじしろ」が指定されていると、強制的に左の印刷開始位置を取ってしまうので、これをレポート上で0にするか、プログラムで一緒に変更するかしないとだめだと思います。

投稿者:かずい

編集 履歴 (0)

「とじしろ」を0に設定することで解決しました。
ありがとうございました。

投稿者:chiroru

編集 履歴 (0)

もう一つご存じであれば教えて下さい。
動的に左余白を設定するのに、下記のように記述したのですが、
「とじしろ」をこのように書くことはできないのでしょうか?
rpt.PageSettings.Marginsの候補にそれらしきものがなかったので…

rpt.PageSettings.Margins.Left = ActiveReport3.CmToInch(2.0)

投稿者:chiroru

編集 履歴 (0)

たしか、ヘルプにのっていたと思いますよ。

PageSettingsのメンバだったとおもったけど・・・記憶が定かではないですが・・・。

投稿者:かずい

編集 履歴 (0)

かずいさんの書き込み (2009-03-19 16:21) より:

たしか、ヘルプにのっていたと思いますよ。

PageSettingsのメンバだったとおもったけど・・・記憶が定かではないですが・・・。

すみません。ヘルプも他に色々調べたのですが、辿りつきません。
どなたかご教授お願いします。

投稿者:chiroru

編集 履歴 (0)

あれ?
2.0のトライアル版には載っていました。
(手元の環境にトライアル版しかなかったので、調べてみた結果です。)

PageSettings.Gutter ですね。

あ、3.0だと違うかも?

# イジワルして書かなかったわけじゃなく、仕事中だったので
# 調べずに回答していたので、仕事終わった後調べてみました。

[ メッセージ編集済み 編集者: かずい 編集日時 2009-03-19 17:56 ]

投稿者:かずい

編集 履歴 (0)

PageSettings.Gutterでできました。
msdnで調べていたのですがうまくたどりつかなかったようです。
ありがとうございました。

投稿者:chiroru

編集 履歴 (0)

あ、msdnでは、出てこないですよ。

当たり前ですが、msdnは、あくまでもマイクロソフト社のヘルプなんで、
サードパーティの製品のヘルプは存在しない(はず)です。

インストールされてるアクティブレポートにヘルプがあると思うのですが、こちらで探さないとヒットしませんよ。
(ま、当たり前っちゃ当たり前ですが・・・。)

投稿者:かずい

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。