I have a column which have only "yes" and "no" values. I want if column value is "yes" then only that cell background color is red else "no" then background color is yellow but this code colors whole row :
if ADOTable1.FieldByName('Clubs').AsString = 'yes' then
begin
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
EDIT
Thanks for your replies. My real code look like that. The "netice" column only have "L, D, W,".
if Column.FieldName = 'netice' then
begin
if ADOTable1.FieldByName('netice').AsString = 'L' then
DBGrid1.Canvas.Brush.Color := clgreen ;
if ADOTable1.FieldByName('netice').AsString = 'D' then
DBGrid1.Canvas.Brush.Color := clRed ;
if ADOTable1.FieldByName('netice').AsString = 'W' then
DBGrid1.Canvas.Brush.Color := clYellow ;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
but I need L--green, D--red, W--yellow I am using Delphi 2010.
You need to add a condition to restrict changing of the brush color only to the column of your choice. In code it could be:
I'd prefer this before
Column.FieldName
becauseColumn.FieldName
does not yet guarantee that there is such field in the linked dataset. Accessing the field directly is therefore safer in this manner.