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

Цветной DBGrid

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

Цветной DBGrid

Глупый юзер горько плачет
На обломки окон глядя.
Глупый юзер: он не знает,
Что такое мелко-мягкий.


// 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 field
  if (DataCol = 0) then 
  begin 
    //Проверяем значение поля и присваеваем цвет  
     
    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 запросе. Окрашивание происходит путем изменения цвета кисти канваса, представляющего каждый ячейку в сетке.

Вот подробное описание работы:

  1. Процедура ColorGrid объявлена как приватная, что означает, что она может быть доступна только изнутри той же формы (TForm1). Она принимает пять параметров:
    • dbgIn: Контроль DBGrid для окрашивания.
    • qryIn: Запрос, предоставляющий данные для сетки.
    • Rect: Прямоугольник, представляющий ячейку для рисования.
    • DataCol: Номер столбца ячейки для окрашивания (в этом случае всегда 0).
    • Column: Объект информации о столбце, связанный с DataCol.
    • State: Состояние ячейки при рисовании.
  2. Внутри ColorGrid она проверяет, равен ли DataCol 0. Если это так:
    • Она получает значение поля с именем 'HINWEIS_COLOR' из запроса (qryIn.FieldByName('HINWEIS_COLOR').AsInteger;). Это значение определяет, какой цвет применить.
    • Она использует оператор case для установки цвета кисти в зависимости от значения, полученного в шаге 2.1:
      • Если значение равно 1, она устанавливает цвет кисти в зеленый (clGreen).
      • Если значение равно 2, она устанавливает цвет кисти в лимонный (clLime).
      • Если значение равно 3, она устанавливает цвет кисти в желтый (clYellow).
      • Если значение равно 4, она устанавливает цвет кисти в красный (clRed).
  3. После установки цвета кисти она вызывает метод dbgIn.DefaultDrawColumnCell (метод контроля DBGrid) для рисования ячейки с использованием нового установленного цвета кисти.
  4. Процедура DBGrid1DrawColumnCell является обработчиком события OnDrawColumnCell для контроля DBGrid (DBGrid1). Она просто вызывает процедуру ColorGrid с необходимыми параметрами, эффективно применять логику окрашивания к каждой ячейке в сетке при рисовании.

Предлагаемые улучшения:

  • Вместо жесткого кодирования цветов (например, clGreen, clLime и т.д.) рассмотрите возможность определения их как констант в верхней части вашего модуля или отдельного модуля цвета для организации и поддержки кода.
  • Рассмотрите добавление обработки ошибок для случаев, когда поле 'HINWEIS_COLOR' не присутствует в запросе или значение, полученное из запроса, не может быть преобразовано в целое число.
  • Если вы планируете добавить более сложную логику окрашивания ячеек, рассмотрите возможность извлечения ее в отдельный функцию или класс для модульности и повторного использования кода.

Описывается способ окрашивания ячеек DBGrid в Delphi с помощью процедуры ColorGrid и ее вызова из процедуры DrawColumnCell.


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

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




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


:: Главная :: TDBGrid ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:30:19/0.0055131912231445/1