Скрытие заголовка страницы в FreeReport при наличии нескольких страниц
При работе с FreeReport в FastReport может возникнуть потребность скрыть заголовок страницы, если отчет содержит несколько страниц. В этом материале мы рассмотрим, как реализовать это с помощью кода на Object Pascal (Delphi).
Описание проблемы
Пользователь хочет скрыть заголовок страницы в FreeReport, если отчет содержит более одной страницы. Он пытался реализовать это с помощью кода:
If TOTALPAGES > 1 then Pageheader.visible = false
Однако, этот код не работает, когда размещается в Pascal-разделе отчета. Также не удается сделать это с помощью записи:
[IFF([TOTALPAGES] > 1,'PAGEHEADER.VIBLE=0')]
Пользователь задается вопросом, какой правильный способ реализовать это?
Подтвержденный ответ
Для достижения желаемого результата можно воспользоваться событием OnBeforePrint полосы прокрутки заголовка страницы. В этом событии можно проверить количество страниц отчета и скрыть заголовок страницы, если отчет содержит более одной страницы. Вот пример кода, который можно использовать для этого:
procedure TfrxPageHeader.PageHeader1BeforePrint(Sender: TfrxComponent);
begin
TfrxPageHeader(Sender).Visible := (frxReport1.PreviewPages.Count = 1);
end;
В этом коде frxReport1 - это имя вашего компонента отчета FastReport. Метод PreviewPages.Count возвращает количество страниц в отчете. Если отчет содержит более одной страницы, заголовок страницы будет скрыт.
Альтернативный ответ
Если вам нужно скрыть заголовок страницы, только когда отчет фактически печатается или отображается в предварительном просмотре, можно воспользоваться событием OnPrint компонента отчета. В этом событии можно проверить количество страниц отчета и скрыть заголовок страницы, если отчет содержит более одной страницы. Вот пример кода, который можно использовать для этого:
procedure TfrxReport1.Print(Sender: TObject);
begin
if frxReport1.PreviewPages.Count > 1 then
TfrxPageHeader(frxReport1.FindObject('PageHeader1')).Visible := False;
end;
В этом коде frxReport1.FindObject('PageHeader1') используется для получения ссылки на заголовок страницы. Метод Visible затем устанавливается в False, чтобы скрыть заголовок страницы, если отчет содержит более одной страницы.
Заключение
В этой статье мы рассмотрели, как скрыть заголовок страницы в FreeReport, если отчет содержит несколько страниц. Мы рассмотрели два подхода к реализации этого: использование события OnBeforePrint полосы прокрутки заголовка страницы и использование события OnPrint компонента отчета. Оба подхода позволят вам достичь желаемого результата в зависимости от ваших конкретных требований.
Материал описывает, как скрыть заголовок страницы в отчете FreeReport с помощью FastReport, если отчет содержит несколько страниц.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS