在运行时调整子报表对象的高度

时间:2015-05-29 12:37:42

标签: delphi delphi-7 fastreport

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

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

GroupHeader和MasterData乐队的拉伸属性都设置为" true"。所有MemoView都将其StretchMode属性设置为" smMaxHeight"而他们的ShiftMode属性设置为" smWhenOverlapped"。 最后,Subreport的属性PrintOnParent被设置为" true"而它的ShiftMode属性设置为" smWhenOverlapped"。

现在,只要CommoditiesMemo的高度大于其他两个MemoView高度的高度,Subreport就会延伸声称其CommoditiesMemo最大高度,而GroupHeader-band则通过调整其自身高度以及它的物体高度。所以一切都按预期运作。 但是,如果ContainerInfMemo的高度是所有其他MemoView高度中的较高者,那么我将处理以下悖论:

  • 子报告的扩展程度与其商品会计高度要求一样多,而

  • GroupHeader-band比其ContainerInfMemo更加拉伸 需要比CommoditiesMemo更多的空间。

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

Bad report

Report as it should always be

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

提前谢谢

1 个答案:

答案 0 :(得分:0)

尝试在TfrxSubreport

中禁用TfrxMemoView的底线