FastReport — популярный отчетный инструмент для разработчиков, работающих с Delphi и Pascal. Одним из часто задаваемых вопросов является возможность сделать заголовки отчета видимыми только на нечетных страницах. В этой статье мы рассмотрим, как это сделать в FastReport VCL 4.
Проблема
Разработчик хочет отображать заголовки отчета только на нечетных страницах, но не может найти решение в документации, на форуме или в поисковых системах.
Решение
Для достижения этой цели можно воспользоваться событием OnBeforePrint объекта страницы. В этом событии мы можем изменить видимость заголовка страницы в зависимости от того, является ли текущая страница нечетной или нет. Вот пример кода на Object Pascal (Delphi), который решает эту проблему:
procedure TForm1.PageHeader1BeforePrint(Sender: TObject);
begin
PageHeader1.Visible := (Fraction(Page#) > 0.01);
end;
В этом примере Page# — это свойство, которое возвращает номер текущей страницы. Функция Fraction используется для получения дробной части числа. Если дробная часть больше 0.01, это означает, что страница является нечетной. В таком случае, видимость заголовка страницы устанавливается в true, делая его видимым.
Альтернативный ответ
Если вам не нравится использовать функцию Fraction, вы можете добавить собственную функцию IsOdd в свой проект, которая будет проверять, является ли страница нечетной. Например:
function IsOdd(n: Integer): Boolean;
begin
Result := (n mod 2) = 1;
end;
procedure TForm1.PageHeader1BeforePrint(Sender: TObject);
begin
PageHeader1.Visible := IsOdd(Page#);
end;
В этом примере функция IsOdd использует оператор mod для проверки, остается ли страница при делении на 2. Если остаток равен 1, это означает, что страница является нечетной.
Подтвержденный ответ
Использование события OnBeforePrint и проверка, является ли страница нечетной, — это верный путь для достижения цели. Какой именно код вы используете (с функцией Fraction или с собственной функцией IsOdd), зависит от ваших личных предпочтений.
В отчете FastReport VCL 4 сделать видимыми заголовки только на нечетных страницах можно с помощью события OnBeforePrint и проверки, является ли страница нечетной.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS