【问题标题】:Adjusting Subreport object's height in run time在运行时调整子报表对象的高度
【发布时间】:2015-06-02 02:55:32
【问题描述】:

您好,我在 Delphi 7 中使用 FastReports4,我必须从处理容器及其存储货物的表单中生成报告。在构建报告时,我发现自己面临以下问题: 在主报告中,我放置了一个绑定到容器数据源的 GroupHeader-band。在此,我放置了一个带有容器信息的 MemoView(称为 ContainerInfMemo),一个用于将存储的商品信息存储到相关容器的 Subreport,以及另一个用于计算容器总重量的 MemoView(称为 GrossWeightMemo)。商品。

在子报表中,我放置了一个绑定到 Commodities 数据源的 MasterBand,我在其中放置了另一个用于打印商品详细信息的 MemoView(称为 CommoditiesMemo)。

GroupHeader 和 MasterData 带区的拉伸属性都设置为“true”。所有 MemoView 的 StretchMode 属性设置为“smMaxHeight”,而 ShiftMode 属性设置为“smWhenOverlapped”。 最后,子报表的属性 PrintOnParent 设置为“true”,而其 ShiftMode 属性设置为“smWhenOverlapped”。

现在,只要 CommoditiesMemo 的高度大于其他两个 MemoView 高度的高度,Subreport 就会拉伸以声明其 CommoditiesMemo 最大高度,并且 GroupHeader-band 通过调整其自身的高度以及其对象的高度来跟随。所以一切正常。 但是,如果 ContainerInfMemo 的高度是所有其他 MemoView 高度中较大的一个,那么我将处理以下悖论:

  • 子报表的长度达到了 CommoditiesMemo 的高度要求,而

  • 自 ContainerInfMemo 以来,GroupHeader-band 的拉伸程度超过了 比 CommoditiesMemo 需要更多的空间。

因此,最终结果是在报告中的容器商品详细信息的行/记录之间存在间隙。更具体地说,我为您提供以下图像,以便为您提供报告行为方式的图像以及它应该如何表现

Bad report

Report as it should always be

所以我问是否有任何方法可以在运行时调整子报表或 MemoView 的高度。我不得不说我尝试在 Subreport 和 MemoView 的“OnBeforePrint”事件上使用脚本,但不幸的是,引擎考虑了相对对象在设计时而不是在运行时的高度。 有没有办法成功面对这个问题?

提前谢谢你

【问题讨论】:

    标签: delphi delphi-7 fastreport


    【解决方案1】:

    尝试在 TfrxSubreport 中禁用 TfrxMemoView 的底线

    【讨论】:

    • 具体来说,水平线可能在适当的位置,但垂直线在下一个集装箱商品之前停止上方的一些空间。因此,它表明单元格中缺少 smth
    • 附上您的报告模板 (fr3) 或将有问题的小型演示项目发送给 FR 支持
    • 我正在附上报告模板,希望您能解决问题。但是..我不知道如何附加报告。所以我会尝试通过电子邮件或消息将报告发送给您
    • 你能把你的电子邮件发给我吗?
    • support@fast-report.com 或 paulgur@fast-report.com
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多