postition, чтобы обычно помещать код будет OnBeforePrint
(*) событие затем PageHeader группы, но это не будет работать с <TotalPages#>
procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);
begin
TfrxPageHeader(Sender).visible := (<TotalPages#> = 1);
end;
проблема с этим подходом является <TotalPages#>
не будет оцениваться в это время.
Вторая проблема заключается в том, что отображение или скрытие PageHeader может повлиять на количество страниц. Чтобы достичь желаемого результата, вам нужно будет сделать отчет frxreport1.PrepareReport(true);
. Вы можете сделать это дважды, с видимым инструментом PageHeader и unvisble PageHeader. К любой части отчета можно обращаться по адресу frxReport1.FindObject
. Перед использованием убедитесь, что это назначено.
В качестве опоры для другого объекта, используемого для печати/предварительного просмотра объектов, является событие OnPrint
компонента frxReport, который будет вызываться для каждого объекта перед его визуализацией.
begin
frxReport1.FindObject('PageHeader1').Visible := true;
frxReport1.PrepareReport(true);
// in my test case 2 Pages
Showmessage(IntToStr(frxReport1.PreviewPages.Count));
frxReport1.ShowPreparedReport;
frxReport1.FindObject('PageHeader1').Visible := false;
frxReport1.PrepareReport(true);
// in my test case 1 Page
Showmessage(IntToStr(frxReport1.PreviewPages.Count));
frxReport1.ShowPreparedReport;
end;
Обычное место реализации кода отчета:
с * TotalPages * вы попали интересную тему. – bummi