打破数据并保持其一致性
在本节中,我们将研究两种数据打印模式--"Break "和 "Keep together"。
在常规的带状打印模式中,FastReport检查当前页是否有足够的空间来打印一个带状。如果没有,则在下一页上全部打印出带子。如果带子的 "CanBreak "属性被激活,FastReport将尝试将带子的一部分打印在可用的空间上,也就是 "Break "。
打破一个带子的尝试可以成功,也可以不成功。这取决于被放置在带子上的对象的类型和它的设置。以下物体可以被打破:
- "Text"
- "Rich Text"
- "Table"
在下图中,显示了一个带子是如何被打破的。
Break algorithm does not always work correctly. The artifacts can occur in a situation, when there are several objects with different font size on a band.
断带的目的是为了节省印张上的空间。数据保持的目标则相反:在一张纸上完全显示一组带子。在这种情况下,虽然纸张上会有很多未使用的空间,但数据的打印方式让人很舒服。
"keep together "机制允许将一组带子保持在一张纸上(或列,如果报告有列的话)。如果在打印时,保留的数据到了页面的末端,FastReport会将所有已经打印过的数据重新定位到新的页面。
你可以在以下情况下使用 "keep together":
一起打印 "Data"带的所有行;
一起打印一个组的所有元素(页眉、数据、页脚);
将主数据源的行与所有明细行一起打印(在 "master-detai "报告中);
打印报告页眉或数据页眉与至少一个数据行;
打印报告页脚或数据页脚以及至少一个数据行;
一起打印父带和子带。
让我们来看看 "keep together "机制的使用情况。
要把所有的数据行或组元素(页眉、数据、页脚)放在一起,请启用 "KeepTogether "属性。这个属性在 "Data "和 "Group Header "带中使用。
下图显示了在有和没有保持在一起的情况下数据的打印情况:
要把主数据行和详细数据行放在一起,请启用 "KeepDetail "带的 "KeepDetail "属性。这个属性用于 "master-detail "类型的报告中:
为了防止 "hanging "页眉和页脚,请使用 "KeepWithData "属性。下面这些带子都有这个属性:
- report header
- 报告页脚
- data header
- 数据页脚
- 组头
- 组页脚
这个属性允许保持至少有一个数据行的页眉/页脚:
为了使一个带子和它的子带子保持在一起,启用 "KeepChild "属性。