Create DBGrid with colored cells

Posted in Databases

Use OnDrawColumnCell event of DBGrid component with the following code. This example will paint each cell to green color, if these cells are odd.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  HoldColor: TColor;
begin
  HoldColor:=DBGrid1.Canvas.Brush.Color; 
  if Column.FieldName='EmpNo' then 
    if (Column.Field.AsInteger mod 2 <> 0) then 
    begin
      DBGrid1.Canvas.Brush.Color:=clGreen;
      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      DBGrid1.Canvas.Brush.Color:=HoldColor;
    end;
end;