Глупый юзер горько плачет
На обломки окон глядя.
Глупый юзер: он не знает,
Что такое мелко-мягкий.
// Function to color a DBGrid (declared as private) procedure TForm1.ColorGrid(dbgIn: TDBGrid; qryIn: TQuery; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
iValue: LongInt;
begin// color only the first fieldif (DataCol = 0) thenbegin//Проверяем значение поля и присваеваем цвет
iValue := qryIn.FieldByName('HINWEIS_COLOR').AsInteger;
case iValue of
1: dbgIn.Canvas.Brush.Color := clGreen;
2: dbgIn.Canvas.Brush.Color := clLime;
3: dbgIn.Canvas.Brush.Color := clYellow;
4: dbgIn.Canvas.Brush.Color := clRed;
end;
dbgIn.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
ColorGrid(DBGrid1, Query1, Rect, DataCol, Column, State);
end;
Перевод контента на русский язык:
Код предназначен для окрашивания DBGrid (тип сетки управления, используемый в Delphi) в зависимости от значения конкретного поля в underlying database запросе. Окрашивание происходит путем изменения цвета кисти канваса, представляющего каждый ячейку в сетке.
Вот подробное описание работы:
Процедура ColorGrid объявлена как приватная, что означает, что она может быть доступна только изнутри той же формы (TForm1). Она принимает пять параметров:
dbgIn: Контроль DBGrid для окрашивания.
qryIn: Запрос, предоставляющий данные для сетки.
Rect: Прямоугольник, представляющий ячейку для рисования.
DataCol: Номер столбца ячейки для окрашивания (в этом случае всегда 0).
Column: Объект информации о столбце, связанный с DataCol.
State: Состояние ячейки при рисовании.
Внутри ColorGrid она проверяет, равен ли DataCol 0. Если это так:
Она получает значение поля с именем 'HINWEIS_COLOR' из запроса (qryIn.FieldByName('HINWEIS_COLOR').AsInteger;). Это значение определяет, какой цвет применить.
Она использует оператор case для установки цвета кисти в зависимости от значения, полученного в шаге 2.1:
Если значение равно 1, она устанавливает цвет кисти в зеленый (clGreen).
Если значение равно 2, она устанавливает цвет кисти в лимонный (clLime).
Если значение равно 3, она устанавливает цвет кисти в желтый (clYellow).
Если значение равно 4, она устанавливает цвет кисти в красный (clRed).
После установки цвета кисти она вызывает метод dbgIn.DefaultDrawColumnCell (метод контроля DBGrid) для рисования ячейки с использованием нового установленного цвета кисти.
Процедура DBGrid1DrawColumnCell является обработчиком события OnDrawColumnCell для контроля DBGrid (DBGrid1). Она просто вызывает процедуру ColorGrid с необходимыми параметрами, эффективно применять логику окрашивания к каждой ячейке в сетке при рисовании.
Предлагаемые улучшения:
Вместо жесткого кодирования цветов (например, clGreen, clLime и т.д.) рассмотрите возможность определения их как констант в верхней части вашего модуля или отдельного модуля цвета для организации и поддержки кода.
Рассмотрите добавление обработки ошибок для случаев, когда поле 'HINWEIS_COLOR' не присутствует в запросе или значение, полученное из запроса, не может быть преобразовано в целое число.
Если вы планируете добавить более сложную логику окрашивания ячеек, рассмотрите возможность извлечения ее в отдельный функцию или класс для модульности и повторного использования кода.
Описывается способ окрашивания ячеек DBGrid в Delphi с помощью процедуры ColorGrid и ее вызова из процедуры DrawColumnCell.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.