Цветные ячейки в DBGrid — Delphi(Делфи)

С DBGrids это делается намного проще. Здесь мы будем использовать событие «OnDrawColumnCell». Следующий пример разукрашивает ячейки колонки «Status» когда значение НЕ равно «a».

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
  clPaleGreen = TColor($CCFFCC);
  clPaleRed = TColor($CCCCFF);
begin

  If Column.FieldName = 'Status' then
  // Удалите эту линию, если хотете закрасить целую линию

    If Column.Field.Dataset.FieldbyName('Status').AsString <> 'a' then
      If (gdFocused in State) // имеет ли ячейка фокус?
      then
        dbgrid1.canvas.brush.color := clBlack // имеет фокус
      else
        dbgrid1.canvas.brush.color := clPaleGreen; // не имеет фокуса

  // Теперь давайте закрасим ячейку используя стандартный метод:
  dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State)
end;

Leave a Comment