Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Оформление ячеек с учетом выходных дней при печати отчета в Delphi

Delphi , Компоненты и Классы , TQuickReport

Вопрос оформления ячеек с учетом выходных дней в отчетах на Delphi достаточно актуален, особенно когда требуется визуально выделить определенные строки. В данном случае, пользователь уже реализовал изменение цвета для ячеек с выходными днями в DBGrid, но столкнулся с проблемой переноса этого стиля на печать отчета. Для решения этой задачи можно использовать функционал FastReport, который позволяет настраивать внешний вид отчета, включая условное форматирование.

Шаг 1: Понимание задачи

Пользователь уже реализовал изменение цвета для ячеек с выходными днями в DBGrid с помощью события OnDrawColumnCell. Однако, при печати отчета через FastReport, этот стиль не сохраняется. Необходимо найти способ передать эту логику в печатный формат.

Шаг 2: Использование Conditional highlighting

FastReport предоставляет функцию Conditional highlighting, которая позволяет задать различные условия для форматирования ячеек. Это идеально подходит для нашей задачи.

Шаг 3: Пример кода

Давайте рассмотрим пример кода, который можно использовать в FastReport для изменения цвета ячеек с выходными днями:

procedure TReport1BeforePrint(Sender: TObject);
var
  CurrentDate: TDate;
begin
  with Report1.CreateDetailReportBuilder(Report1.Detail) do
  begin
    for CurrentDate := FirstDayOfWeek(Report1.DateField) to LastDayOfWeek(Report1.DateField) do
    begin
      AddConditionalHighlighting;
      if CurrentDate = Friday or CurrentDate = Saturday then
        SetConditionalHighlightingParams(TFRCHP_Cell, [tfrcpBkColor], [$0053FFFF]);
      else
        ResetConditionalHighlighting;
    end;
  end;
end;

Здесь мы перебираем даты в детализации отчета и, если текущая дата приходится на пятницу или субботу, устанавливаем условие для изменения цвета фона ячейки.

Шаг 4: Альтернативное решение

Если по каким-то причинам использование Conditional highlighting не подходит, можно реализовать собственное решение, используя событие OnDraw для каждого элемента отчета, который должен быть отформатирован. В этом случае, аналогично OnDrawColumnCell, проверяем значение ячейки и изменяем параметры рисования.

procedure TReport1DrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ADataSet: TDataSet; Field: TField);
var
  CellValue: string;
begin
  CellValue := Field.AsString;
  if (CellValue = 'Friday') or (CellValue = 'Saturday') then
  begin
    ACanvas.Brush.Color := $0053FFFF;
    ACanvas.FillRect(ARect);
  end;
end;

Заключение

Использование Conditional highlighting в FastReport позволяет легко оформить ячейки с выходными днями в соответствии с цветом, установленным в DBGrid. Это решение не требует дополнительной настройки при печати и идеально подходит для автоматизации процессов визуализации данных в отчетах.

Создано по материалам из источника по ссылке.

Пользователь столкнулся с проблемой переноса стиля визуального выделения ячеек с выходными днями из компонента DBGrid в печатный отчет в среде Delphi с использованием FastReport.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TQuickReport ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 17:56:10/0.0032479763031006/0