FastReport 4.12.6 中有一个报告。它显示按类型分组的数据(使用 SubReport)。报告本身在卸载和分组数据方面起作用。问题是组字段的高度没有延伸到它们自己的 MasterData。它看起来(示意性地)像这样:
正如您在图像中看到的:字段 2(组名)和 5(类型总数(在第 2 行的字段 3 中表示))应该在高度上拉伸,但这不会发生。“播放”了备忘录本身的 StretchMode 属性,以及放置它们的 MasterData 的 Stretched。
报告的结构如下:
MasterData
Memo //для поля 2 (название группы)
Subreport
MasterData
Memo //для поля 5 (общее количество типов (указаны в поле 3 во 2й строке))
Subreport
MasterData
Memo //для остальных полей
数据附加到 MasterData 和 Memo(三个不同的查询:组 (2)、组中的类型及其编号 (5)、详细信息 (3,6,7))如果子 ID 与父 ID 不匹配。
我无法更详细地描述它,因为它是公司机密。
有关如何将 Memo 扩展到其 MasterData 的完整高度的建议?好吧,或者告诉我,也许我通常使用错误的分组方法,我应该,好吧,相应地指导它。
我附上了一个与我的主要报告完全相同的最小示例(也就是说,不正确,没有拉伸,设置仍然相同)。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<TfrxReport Version="4.12.6" DotMatrixReport="False" IniFile="\Software\Fast Reports" PreviewOptions.Buttons="4095" PreviewOptions.Zoom="1" PrintOptions.Printer="Default" PrintOptions.PrintOnSheet="0" ReportOptions.CreateDate="43705,4791322454" ReportOptions.Description.Text="" ReportOptions.LastChange="43705,4818397107" ScriptLanguage="PascalScript" ScriptText.Text="begin end." PropData="03546F7003C0000844617461736574730100095661726961626C65730100055374796C650100">
<TfrxDataPage Name="Data" Height="1000" Left="0" Top="0" Width="1000"/>
<TfrxReportPage Name="Page1" PaperWidth="210" PaperHeight="297" PaperSize="9" LeftMargin="10" RightMargin="10" TopMargin="10" BottomMargin="10" ColumnWidth="0" ColumnPositions.Text="" HGuides.Text="" VGuides.Text="">
<TfrxMasterData Name="MasterData1" Height="18,89765" Left="0" Top="18,89765" Width="718,1107" ColumnWidth="0" ColumnGap="0" RowCount="2" Stretched="True">
<TfrxSubreport Name="Subreport1" Left="0" Top="0" Width="718,1107" Height="18,89765" ShowHint="False" Page="Page2"/>
<TfrxMemoView Name="Memo1" Left="109,60637" Top="0" Width="94,48825" Height="18,89765" ShowHint="False" StretchMode="smMaxHeight" Font.Charset="1" Font.Color="-16777208" Font.Height="-13" Font.Name="Arial" Font.Style="0" Frame.Typ="15" ParentFont="False" Text="Group"/>
</TfrxMasterData>
</TfrxReportPage>
<TfrxReportPage Name="Page2" PaperWidth="210" PaperHeight="297" PaperSize="9" LeftMargin="10" RightMargin="10" TopMargin="10" BottomMargin="10" ColumnWidth="0" ColumnPositions.Text="" HGuides.Text="" VGuides.Text="">
<TfrxMasterData Name="MasterData2" Height="18,89765" Left="0" Top="18,89765" Width="718,1107" ColumnWidth="0" ColumnGap="0" RowCount="2" Stretched="True">
<TfrxSubreport Name="Subreport2" Align="baWidth" Left="0" Top="0" Width="718,1107" Height="18,89765" ShowHint="False" Page="Page3"/>
<TfrxMemoView Name="Memo3" Left="204,09462" Top="0" Width="94,48825" Height="18,89765" ShowHint="False" StretchMode="smMaxHeight" Font.Charset="1" Font.Color="-16777208" Font.Height="-13" Font.Name="Arial" Font.Style="0" Frame.Typ="15" ParentFont="False" Text="Count"/>
</TfrxMasterData>
</TfrxReportPage>
<TfrxReportPage Name="Page3" PaperWidth="210" PaperHeight="297" PaperSize="9" LeftMargin="10" RightMargin="10" TopMargin="10" BottomMargin="10" ColumnWidth="0" ColumnPositions.Text="" HGuides.Text="" VGuides.Text="">
<TfrxMasterData Name="MasterData3" Height="18,89765" Left="0" Top="18,89765" Width="718,1107" ColumnWidth="0" ColumnGap="0" RowCount="5" Stretched="True">
<TfrxMemoView Name="Memo4" Left="298,58287" Top="0" Width="94,48825" Height="18,89765" ShowHint="False" StretchMode="smMaxHeight" Font.Charset="1" Font.Color="-16777208" Font.Height="-13" Font.Name="Arial" Font.Style="0" Frame.Typ="15" ParentFont="False" Text="Details"/>
</TfrxMasterData>
</TfrxReportPage>
</TfrxReport>
要沿带的高度拉伸对象,
StretchMode = smMaxHeight
. 要拉伸带以使其包含其对象,请使用该属性Stretched = True
。如果你不能,那么请制作并附上一个最小的例子(没有公司机密),我们将尝试找出它有什么问题。
它看起来像 FastReport 中的一个错误,它不计算子报表的高度。那么有3个解决方案:
有一种解决问题的方法 - 将 y 设置为
Subreport
enabled 属性PrintOnParent
并将“拉伸”字段设置为StretchMode = smMaxHeight
。但是,如果您只使用一个子查询,此选项只会对您有所帮助。如果您在子查询中还有一个子查询,并且两者都设置为PrintOnParent = true
,那么嵌套在子查询中的子查询(听起来很糟糕,但我不知道如何描述它)将根本不会被打印,就好像它确实一样根本不存在。这是一件很奇怪的事情,而且很可能是 FastReport 本身的一个缺陷。由于我只有一个“多重嵌套”案例,另一件事帮助了我。在我仔细检查了所有内容 10 次之后(FastReport 指南没有帮助,也没有帮助),我通过为每个“问题”备忘录定义 OnAfterData 找到了解决方案:
这种情况很特殊,但只有这种方法适用于多嵌套子查询。对于高度乘数,我使用了参考备忘录,它的高度对我来说永远不会改变,而且我示例中 Detail 中的所有行的高度始终与其相等。