Delphi代码如下:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with (Sender as TDBGrid) do
begin
if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then
begin
Canvas.Font.Color := clHighlightText;
Canvas.Brush.Color := clHighlight;
end
else
begin
if DataSource.DataSet.RecNo mod 2 <> 0 then
Canvas.brush.Color := clRed
else
Canvas.brush.Color := clYellow;
end;
DefaultDrawColumnCell(Rect, DataCol, Column, State); //这行是关键
end;
end;
简单的方法
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Table1.RecNo mod 2)=0 then
Dbgrid1.Canvas.Brush.Color:=clred;
else
Dbgrid1.Canvas.Brush.Color:=clblue;
Dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
改为c++builder 代码就是
void __fastcall TMainFrm::Veh_DBGridDrawColumnCell(TObject *Sender, const TRect &Rect,
int DataCol, TColumn *Column, TGridDrawState State)
{
try
{
if(Veh_DBGrid->DataSource->DataSet->RecNo%2==0)
{
Veh_DBGrid->Canvas->Brush->Color=clSilver;
}
else
{
Veh_DBGrid->Canvas->Brush->Color=clWindow;
}
Veh_DBGrid->DefaultDrawColumnCell(Rect,DataCol,Column,State) ;
}
catch(...)
{
//
}
}