【发布时间】: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 需要更多的空间。
因此,最终结果是在报告中的容器商品详细信息的行/记录之间存在间隙。更具体地说,我为您提供以下图像,以便为您提供报告行为方式的图像以及它应该如何表现
所以我问是否有任何方法可以在运行时调整子报表或 MemoView 的高度。我不得不说我尝试在 Subreport 和 MemoView 的“OnBeforePrint”事件上使用脚本,但不幸的是,引擎考虑了相对对象在设计时而不是在运行时的高度。 有没有办法成功面对这个问题?
提前谢谢你
【问题讨论】:
标签: delphi delphi-7 fastreport