如此就可以了 procedure TFrm_sfs.DG_djdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DG_djd.DataSource.DataSet.FieldByName('RECID').AsInteger mod 2 = 0 then begin DG_djd.Canvas.Brush.Color:=clWindow; end else begin DG_djd.Canvas.Brush.Color:=clSilver; end; if (gdSelected in state)and dbgrid1.Focused then begin dbgrid1.canvas.brush.color:=clblue; dbgrid1.Canvas.font.Color:=clwhite; end; end;
上面的dbgrid1写错了, 应该是你的网格名DG_djd
对不起,写漏了一行,全部应如此: procedure TFrm_sfs.DG_djdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DG_djd.DataSource.DataSet.FieldByName('RECID').AsInteger mod 2 = 0 then begin DG_djd.Canvas.Brush.Color:=clWindow; end else begin DG_djd.Canvas.Brush.Color:=clSilver; end; if (gdSelected in state)and DG_djd.Focused then begin dbgrid1.canvas.brush.color:=clblue; dbgrid1.Canvas.font.Color:=clwhite; end; DG_djd.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
procedure TFrm_sfs.DG_djdDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DG_djd.DataSource.DataSet.FieldByName('RECID').AsInteger mod 2 = 0 then
begin
DG_djd.Canvas.Brush.Color:=clWindow;
end
else
begin
DG_djd.Canvas.Brush.Color:=clSilver;
end;
if (gdSelected in state)and dbgrid1.Focused then
begin
dbgrid1.canvas.brush.color:=clblue;
dbgrid1.Canvas.font.Color:=clwhite;
end;
end;
procedure TFrm_sfs.DG_djdDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DG_djd.DataSource.DataSet.FieldByName('RECID').AsInteger mod 2 = 0 then
begin
DG_djd.Canvas.Brush.Color:=clWindow;
end
else
begin
DG_djd.Canvas.Brush.Color:=clSilver;
end;
if (gdSelected in state)and DG_djd.Focused then
begin
dbgrid1.canvas.brush.color:=clblue;
dbgrid1.Canvas.font.Color:=clwhite;
end;
DG_djd.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;