以下方法只把一行的颜色都改变了,而我是要根据单元格的数据值而把相应这一单元格颜色改变,不是整行变。
procedure TMainForm.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var num:integer;
begin
num:=sx.FieldByName('num').AsInteger;
case num of
1,2,7,8,12:dbgrideh1.Canvas.Brush.Color:=clRed;
5,6,11:dbgrideh1.Canvas.Brush.Color:=clGreen;
3,4,9,10:dbgrideh1.Canvas.Brush.Color:=clBlue;
end;
DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;有啥好方法?
procedure TMainForm.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var num:integer;
begin
num:=sx.FieldByName('num').AsInteger;
case num of
1,2,7,8,12:dbgrideh1.Canvas.Brush.Color:=clRed;
5,6,11:dbgrideh1.Canvas.Brush.Color:=clGreen;
3,4,9,10:dbgrideh1.Canvas.Brush.Color:=clBlue;
end;
DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;有啥好方法?
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var tmprc: TRect;
num: Integer;
begin
if Column.FieldName = 'num' then
begin
tmprc := DBGridEh1.CellRect(DataCol+1, 0);
if tmprc.Left = Rect.Left then
begin
num := Column.Field.AsInteger;
case num of
1, 2, 7, 8, 12: dbgrideh1.Canvas.Brush.Color := clRed;
5, 6, 11: dbgrideh1.Canvas.Brush.Color := clGreen;
3, 4, 9, 10: dbgrideh1.Canvas.Brush.Color := clBlue;
end;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end;