我想创建一个XtraReport Template类,它获取一个报表对象并将其转换为我们的公司设计。首先,我创建了一个ReportHeaderBand,它为Logo获取了一个XRPictureBox。如何将XRPictureBox放在ReportHeaderBand的右侧?
这就是我到目前为止所做的事情:
internal class Kopfbereich: ReportHeaderBand
{
/// <summary>
/// Erstellt ein Objekt für den Kopfbereich eines Reports
/// </summary>
public Kopfbereich()
{
DruckeLogo();
}
private void DruckeLogo()
{
XRPictureBox picBox = new XRPictureBox();
picBox.Visible = true;
picBox.Sizing = ImageSizeMode.AutoSize;
picBox.Image = Resources.Brillux_Logo_Reports_ohne_Text;
this.Controls.Add(picBox);
}
}
//This Method is from other class and should print my report with template
public XtraReport DruckeMitVorlage(XtraReport report)
{
Kopfbereich kopfbereich = new Kopfbereich();
report.Bands.Add(kopfbereich);
return report;
}
我想在运行时创建它以获取动态模板。所以设计师不是一个选择。
我尝试按照代码行在右侧设置XRPictureBox。
picBox.LocationF = new PointF(Report.PageWidth - picBox.WidthF - Report.Margins.Right.Width, 0);
但是Logo会在下一页显示一半。
答案 0 :(得分:0)
我建议您将此XRPictureBox
控件添加到report header band
而不是this.Controls
。它可以控制图片编辑在报告的顶部打印,而不是在其他页面上打印..
检查代码段:
// Check if the TopMargin band is already present in the report.
if(Bands.GetBandByType(typeof(ReportHeaderBand)) == null) {
// Create a new TopMargin band and add it to the report.
ReportHeaderBandtmBand = new ReportHeaderBand();
Bands.Add(tmBand);
// Create a picture object
XRPictureBox picBox = new XRPictureBox();
picBox.Visible = true;
picBox.Sizing = DevExpress.XtraPrinting.ImageSizeMode.AutoSize;
picBox.Image = Resources.Logo;
this.Controls.Add(picBox);
// Add the label to the ReportHeaderBand band.
tmBand.Controls.Add(picBox);
}
您可以使用报告对象进行控制,如下所示:
// Place the chart onto a report footer
rep.Bands[BandKind.ReportHeader].Controls.Add(picBox);
参考:
How to create a report dynamically in the WinForms application