2010-07-26 96 views
1

我试图以编程方式设置基于页码的活动报表页边距。页面特定页边距设置AR3

具体来说,第一页需要小的边距(以便返回地址的顶部文本框与公司徽标的对齐相匹配),并且之后的每个页面应该具有标准的2.54cm边距。

我读过的帖子提示检测实际的页码可能有问题,所以我尝试使用ReportStart和PageStart处理程序以及一些非常简单的逻辑来设置页边距。

在代码隐藏的报告,我加了两个处理程序和布尔值:

this.ReportStart += UFAnReportStart; 
     this.PageStart += UFAnPageStart; 
bool bFirstPage = true; 

,然后添加两个回调如下:

private void UFAnReportStart(object sender, System.EventArgs eArgs) 
    {   
     this.PageSettings.Margins.Top = 0.1965278F; 
    } 

private void UFAnPageStart(object sender, System.EventArgs eArgs) 
    { 
     // every page after the first should have standard margins. 
     if (!bFirstPage) 
     {    
      this.PageSettings.Margins.Top = 2.54F; 
     } 
     bFirstPage = false; 
    } 

这似乎并不对利润率有任何影响。这种方法是错误的吗?或者是对象属性是一个广泛的报表?

欢迎任何有关替代方法的建议。

使用Activereports3,版本5.2.1013.2。

谢谢!

+0

我也尝试用this.CurrentPage.Margins.Top = 2.54F取代this.PageSettings.Margins.Top = 2.54F,但这也行不通... ... – user246091 2010-07-26 01:09:55

回答

3

以编程方式单位为英寸而不是CM :)设计时间设置仅影响设计器中显示的内容。

以下为我工作:

public void ActiveReport_ReportStart() 
{ 
    rpt.PageSettings.Margins.Top = 0.05f; 
    rpt.PageSettings.Margins.Left = 0.05f; 
    rpt.PageSettings.Margins.Right = 0.05f; 
    rpt.PageSettings.Margins.Bottom = 0.05f;  
} 

public void ActiveReport_PageEnd() 
{ 
    // The first page (page index 0) will inherit the page margins set in ReportStart. 
    // We immediately reset the page margins in the first PageEnd event to ensure subsequent pages get the larger margins. 
    if (rpt.Document.Pages.Count == 0) 
    { 
     rpt.PageSettings.Margins.Top = 1.0f; 
     rpt.PageSettings.Margins.Left = 1.0f; 
     rpt.PageSettings.Margins.Right = 1.0f; 
     rpt.PageSettings.Margins.Bottom = 1.0f; 
    } 
} 

The ActiveReports Support Forums是免费的,积极的,所以他们是一个伟大的地方询问的ActiveReports问题,通过我们的支持团队监控。

希望这有助于

Scott Willeke 
GrapeCity inc. 
+0

英寸?...愚蠢的美国人! ; d。谢谢你的回复。我很确定我在早些时候尝试了你的建议,但无济于事!如果它呈现为RTF或PDF,它会有所作为吗? In将会在我们的应用程序中的不同位置呈现出来...... – user246091 2010-07-26 21:21:45

+0

也许它也会因为上一页开始的文本框继续到第二个...从我读过的内容而变得复杂,在某些意义上,元素的定位似乎是绝对的。显然,我并不清楚主动报告的功能。 :P – user246091 2010-07-26 21:29:58

+0

我试过你的方法,但没有任何区别。每页上的边距都是一样的。这让我难过。它真的好像应该工作...事实上我怀疑其他的东西是阻止边距显示在第二页上。此外,我在VS 2010中进行了这些更改...可能会导致此旧版AR的问题出现问题吗? “报告”菜单甚至无法访问。 :\ – user246091 2010-07-26 22:00:31

0

事实证明,你的建议确实可行的办法!我们将文档转换为PDF和RTF格式。在Adobe Reader中查看PDF格式时,页边距是正确的,但在Word 2010中不会显示为RTF格式;我没有注意到的东西。

Ach,浪费小时! :P

这当然引发了为什么在RTF-in-word版本中不显示边距的问题。

+0

我不确定他们为什么不能在RTF/Word中工作。也许我们不会把它们传递给Word。他们可以很容易地修复。发送一封电子邮件到[email protected]与样本,我应该帮忙。随意引用这个SO线程。 – 2010-07-26 22:52:18