#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
элементов.