Как узнать, когда печатается последняя полоса сведений?

#delphi #delphi-xe6 #quickreports

#delphi #delphi-xe6 #быстрые отчеты

Вопрос:

У меня есть (повторяющаяся) полоса сведений, и к ней прикреплена дочерняя полоса:

введите описание изображения здесь

Я хочу, чтобы дочерний диапазон был скрыт до тех пор, пока не будет напечатан последний детализированный диапазон. Концептуально это было бы что-то вроде:

введите описание изображения здесь

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. Теоретически, что вы могли бы сделать в Onbeforeprint, это создать закладку, расширить набор данных, а затем проверить EOF, затем вернуться к закладке.

Ответ №1:

У меня была такая же проблема, и я решил ее, установив для DetailBand1.FooterBand свойства значение ChildBand1 .

В результате ChildBand1 отображаются один раз после отображения всех повторяющихся DetailBand1 элементов.