在DBGrid的OnDrawColumnCell事件加入以下代码 if Column.FieldName = '列名' then begin (Sender as TDBGrid).Canvas.brush.Color := clRed;//Color (Sender as TDBGrid).DefaultDrawDataCell(Rect, Column.Field, State); end;
列的颜色已解决,非常感谢!!那某一格子中的颜色能设置吗? 比如说 if table1.fieldbyname('project').asstring='payout' then 某一格子中的值的颜色为红色
DBGrid中的单元格不是对象,不要试图去访问 如果要绘制单元格的颜色,需要判断字段值: if (Column.FieldName = '列名') and ((Sender as TDBGrid).DataSource.DataSet.FieldByName('project').AsString = 'payout') then begin (Sender as TDBGrid).Canvas.brush.Color := clRed;//Color (Sender as TDBGrid).DefaultDrawDataCell(Rect, Column.Field, State); end;
begin
(Sender as TDBGrid).Canvas.brush.Color := clRed;//Color
(Sender as TDBGrid).DefaultDrawDataCell(Rect, Column.Field, State);
end;
比如说
if table1.fieldbyname('project').asstring='payout' then
某一格子中的值的颜色为红色
如果要绘制单元格的颜色,需要判断字段值:
if (Column.FieldName = '列名') and ((Sender as TDBGrid).DataSource.DataSet.FieldByName('project').AsString = 'payout') then
begin
(Sender as TDBGrid).Canvas.brush.Color := clRed;//Color
(Sender as TDBGrid).DefaultDrawDataCell(Rect, Column.Field, State);
end;
同理。想要设置某一个格子的颜色,根据ACOL 和AROW。