【问题标题】:Page-specific margin setting in AR3AR3 中的页面特定边距设置
【发布时间】:2010-07-26 00:25:51
【问题描述】:

我正在尝试根据页码以编程方式设置活动报表中的边距。

具体来说,第一页需要有小边距(以便最上面的带有退货地址的文本框与公司徽标的对齐方式相匹配),之后的每一页都应该有标准的 2.54 厘米边距。

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

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

 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;
    }

这似乎对页边距没有任何影响。这种方法是完全错误的吗?还是 PageSettings 对象是报表范围的属性?

欢迎对替代方法提出任何建议。

使用 Activereports3,版本 5.2.1013.2。

谢谢!

【问题讨论】:

  • 我也试过用 this.CurrentPage.Margins.Top = 2.54F 替换 this.PageSettings.Margins.Top = 2.54F 但这也不起作用......

标签: .net activereports


【解决方案1】:

以编程方式单位是英寸而不是 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.

【讨论】:

  • 英寸?...愚蠢的美国人! ;D。谢谢老哥的回复。我很确定我尝试按照您之前的建议进行操作,但无济于事!如果将其渲染为 RTF 或 PDF 会有所不同吗? In 将被渲染到我们应用程序中不同位置的两者....
  • 可能还会因为从上一页开始的文本框继续到第二页这一事实而变得复杂......从我读过的内容来看,元素的定位似乎是绝对的一些感官。显然,我真的不知道活动报告的功能。 :P
  • 我试过你的方法,但没有任何区别。每页的边距都相同。这让我很难过。看起来它真的应该工作......事实上,我怀疑还有其他东西阻止了页边距显示在第二页上。另外,我在 VS 2010 中进行了这些更改......这可能会导致这个旧版本的 AR 出现问题吗?一个人甚至无法访问“报告”菜单。 :\
  • 还有一件事;我正在更改的信函模板扩展了另一个报告 - 即后面的代码有.... public class UFAn : LetterTemplate.除了 PageHeader、PageFooter 和 Detail 部分之外,该报告中没有任何内容。由于上面提到的 VS2010 的问题,我实际上不能为此设计器设置,但是在后面的代码中,所有元素的高度都为零等......虽然没有设置边距。这会改变情况吗?
【解决方案2】:

事实证明,您建议的方法确实有效!我们将文档呈现为 PDF 和 RTF。在 Adob​​e Reader 中以 PDF 格式查看时边距正确,但在 Word 2010 中以 RTF 格式查看时不显示;我没有注意到的东西。

啊,浪费时间! :P

当然,这引发了一个问题,为什么在 RTF-in-word 版本中不显示边距..?

【讨论】:

  • 我不确定为什么它们在 RTF/Word 中不起作用。也许我们不会将它们传递给 Word。他们可能很容易解决这个问题。发送电子邮件至 support@grapecity.us.com 并附上样本,他们应该提供帮助。也可以随意参考这个 SO 线程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
相关资源
最近更新 更多