以下代码应该可以,试试: /// procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); //设置颜色 procedure setColor(ii:Integer) ; begin (Sender as TDBGridEh).Canvas.Brush.Color:=clRed; (Sender as TDBGridEh).Canvas.FillRect(Rect); (Sender as TDBGridEh).Canvas.TextOut(Rect.Left, Rect.Top,DBGridEh1.DataSource.DataSet.Fields[ii].asstring); end; var i:intger; begin for i:=0 to Fieldscount-1 do if (DBGridEh1.DataSource.DataSet.Fields[i].AsFloat<0) then setColor(i); end;
///
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
//设置颜色
procedure setColor(ii:Integer) ;
begin
(Sender as TDBGridEh).Canvas.Brush.Color:=clRed;
(Sender as TDBGridEh).Canvas.FillRect(Rect);
(Sender as TDBGridEh).Canvas.TextOut(Rect.Left,
Rect.Top,DBGridEh1.DataSource.DataSet.Fields[ii].asstring);
end;
var
i:intger;
begin
for i:=0 to Fieldscount-1 do
if (DBGridEh1.DataSource.DataSet.Fields[i].AsFloat<0) then
setColor(i);
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (DataCol = 1)and(ADOTable1.FieldByName('UserName').Value = 'Administrator') then
begin
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.Canvas.Brush.Color := clLime;
end;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
以上代码仅把第一列(从零列开始),第UserName='Administgrator'行的单元格的字体颜色改为红色,背景颜色改为亮绿色