如何知道最后一个详细信息区域何时打印?

时间:2019-03-18 19:33:14

标签: delphi delphi-xe6 quickreports

我有一个(重复的)细节带,并附带一个子带:

enter image description here

我想隐藏子带,直到它打印 last 详细带。从概念上讲,它将是这样的:

enter image description here

EOF?

我的第一个想法是检查数据集的.EOF属性;您可以位于数据行上,但仍为EOF:

procedure TForm6.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
    // Print our child band if we're the last detail band:
    ChildBand1.Enabled := QuickRep1.DataSet.EOF;
end;

但是.EOF永远是不可能的。

也许 BeforePrint 发生在内部.Next发生之前,所以我改为尝试 AfterPrint

procedure TForm6.DetailBand1AfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean);
begin
    // Print our child band if we're the last detail band:
    ChildBand1.Enabled := QuickRep1.DataSet.EOF;
end;

但是从未设置.EOF

如何检测到最后一个细节带正在打印?

所以问题变成了:

  

如何检测到最后一个rbDetail带正在打印?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我通过将 $collection = collect([0, 1, 2, 3, 4, 5]); $chunk = $collection->skip(2)->take(3); $chunk->all(); 属性设置为 DetailBand1.FooterBand 解决了这个问题。

这会导致 ChildBand1 在所有重复的 ChildBand1 项都显示后显示一次。