作成日: 2026/03/25 最終更新日: 2026/03/25
文書種別
使用方法
詳細
Windowsフォーム用のViewerコントロールにセクションレポートを表示させた時に赤い線が表示される場合、以下の原因が考えられます。
用紙の幅よりレポート全体の幅が大きい
プレビュー時の赤い線は、指定された用紙の幅を示します。指定された用紙の幅よりも、レポート全体の幅が大きい場合に、プレビュー時に赤い線が表示されます。
この赤い線を消すには、レポートの幅(レポートのPrintWidthプロパティ)と左右のマージン(PageSettingsオブジェクトのMargins.Left,Margins.Rightプロパティ)および、とじしろ(PageSettingsオブジェクトのGutterプロパティ)を足した値が、用紙の幅(PrinterオブジェクトのPaperWidthプロパティまたはPaperHeightプロパティ)を超えないようにする必要があります。
つまり、「PageSettings.Margins.Left + PageSettings.Margins.Right + PageSettings.Gutter + PrintWidth <= Document.Printer.PaperWidth(Document.Printer.PaperHeight)」を守る必要があります。
下記のいずれかの方法で、レポート上に赤い線が表示されないよう調整してください。
- [レポートの設定]ダイアログで、マージンやとじしろの値を小さくする、用紙サイズを大きくする
- デザイナ画面で、レポートの幅(PrintWidthプロパティ)を小さく設定する
- コードで各プロパティが設定する
以下のサンプルコードでは、レポートの幅(PrintWidthプロパティ)を、用紙の向きやマージンに合わせて調整しています。
◆サンプルコード (C#)
Private Sub SectionReport1_ReportStart(...) Handles MyBase.ReportStart If Me.PageSettings.Orientation = PageOrientation.Landscape Then ' 用紙が横方向の場合 Me.PrintWidth = Me.Document.Printer.PaperHeight _ - (Me.PageSettings.Margins.Left + Me.PageSettings.Margins.Right _ + Me.PageSettings.Gutter) Else ' 用紙が縦方向の場合 Me.PrintWidth = Me.Document.Printer.PaperWidth _ - (Me.PageSettings.Margins.Left + Me.PageSettings.Margins.Right _ + Me.PageSettings.Gutter) End If End Sub◆サンプルコード (VB.NET)
private void SectionReport1_ReportStart(object sender, EventArgs e) { if (this.PageSettings.Orientation == PageOrientation.Landscape) { // 用紙が横方向の場合 this.PrintWidth = this.Document.Printer.PaperHeight - (this.PageSettings.Margins.Left + this.PageSettings.Margins.Right + this.PageSettings.Gutter); } else { // 用紙が縦方向の場合 this.PrintWidth = this.Document.Printer.PaperWidth - (this.PageSettings.Margins.Left + this.PageSettings.Margins.Right + this.PageSettings.Gutter); } }レポートを合成している
AddRange や Addメソッド等を使用することで複数のレポートを1つのレポートに合成することが可能です。この場合、合成先のレポートの用紙サイズが、印刷時の用紙サイズとなります。
合成先のレポートインスタンスが 基本クラスであるGrapeCity.ActiveReports.SectionReportクラスそのものである場合や、合成先のレポートについてRunメソッドを実行していない場合には、SectionReportクラスのデフォルト用紙サイズであるLetterサイズ(幅8.5インチ×高さ11インチ)がレポートの用紙サイズとして適用されます。
一例として、用紙サイズがA4サイズ(幅8.27×高さ11.69インチ)のレポートを合成すると、A4サイズのレポートをLetterサイズで印刷することになります。
Letterサイズは、A4サイズより幅がわずかに広く、長さがやや短くなっております。このため、合成元のレポート(A4)の用紙方向が縦である場合は、合成先のレポート(Letter)の方が幅が広く、余裕があるので赤い線は表示されません。(8.5インチ>8.27インチ)
しかしながら、合成元のレポートの用紙方向が横である場合、合成先のレポートの印刷幅の方が狭くなるため、赤い線が表示されてしまいます。(11インチ<11.69インチ)
つまり、幅11.69インチのレポートを幅11インチで印刷すると判断され、Viewer上に赤い線が表示されます。上記の事象を回避するためには、合成先のレポートの用紙サイズを明示的に指定する必要があります。
◆サンプルコード (C#)
rpt.Document.Printer.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4;◆サンプルコード (VB.NET)
rpt.Document.Printer.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4
なお、赤い線が表示されたままでも印刷することは可能です。ただし、その場合は赤い線で区切られた左側と右側は別々の用紙に印刷されます。その結果、1ページおきに白紙が印刷されるように見える場合があります。