我这里一个函数,你可以试试看: (******************************************************************************* * 过程名:SetGridColor * 过程说明: 用于设置数据库应用程序的DBGrid的数据显示时的颜色 * 可在TDBGrid的DrawColumnCell事件中进行设置,例如: * SetGridColor(CompanyADTable,DBGrid1,Rect,DataCol,Column,State);* 参数说明: * AdoTable:数据库对象名称(可重载,可以使用ADOTABLE,ADOQUERY,TTABLE,TQUERY对象.全部从TDataSet中继承得来) * DbGrid1:要显示的数据库TDBGRID对象 * Rect,DataCol,Column,State:这四个参数可全部从TDBGrid的DrawColumnCell事件中传递过来! *******************************************************************************)Procedure SetGridColor(Var AdoTable:TDataSet;Var DbGrid1:TDBGrid;const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin Case AdoTable.RecNo mod 2 = 0 of // file://根据数据集的记录号进行判断 True: DbGrid1.Canvas.Brush.color:=clcream;// file://偶数行用浅绿色显示 False: DbGrid1.Canvas.Brush.color:= clwhite;// file://奇数行用蓝色表示 end; If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then Case DataCol mod 2 = 0 of True : begin DbGrid1.Canvas.Brush.color:=$00ffff; //file://当前选中行的偶数列用红色 dbgrid1.Canvas.Font.Color:=clred; end; False: begin DbGrid1.Canvas.Brush.color:=$00ffff;// file://当前选中行的奇数列用绿色表示 dbgrid1.Canvas.Font.Color:=clred; end; end; DbGrid1.Canvas.pen.mode:=pmMask; DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State); end;
其实最简单的方法是选中option中的dgRowSelect, 则选中时会变为蓝色
选中option中的dgRowSelect, 则选中时会变为蓝
把option中的dgRowSelect设置为True,增加DBGrid的 OnDrawColumnCell 事件,在这个事件中增加代码就可以使选中的行使用你指定的颜色。参考代码如下: if ((state = [gdSelected, gdFocused]) or (state = [gdSelected])) then begin self.DBGrid.Canvas.Brush.Color := clRED; //在这里更改为你想要的颜色 end; self.DBGrid.DefaultDrawColumnCell(Rect,DataCol,Column,state);
(*******************************************************************************
* 过程名:SetGridColor
* 过程说明: 用于设置数据库应用程序的DBGrid的数据显示时的颜色
* 可在TDBGrid的DrawColumnCell事件中进行设置,例如:
* SetGridColor(CompanyADTable,DBGrid1,Rect,DataCol,Column,State);* 参数说明:
* AdoTable:数据库对象名称(可重载,可以使用ADOTABLE,ADOQUERY,TTABLE,TQUERY对象.全部从TDataSet中继承得来)
* DbGrid1:要显示的数据库TDBGRID对象
* Rect,DataCol,Column,State:这四个参数可全部从TDBGrid的DrawColumnCell事件中传递过来!
*******************************************************************************)Procedure SetGridColor(Var AdoTable:TDataSet;Var DbGrid1:TDBGrid;const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
begin
Case AdoTable.RecNo mod 2 = 0 of // file://根据数据集的记录号进行判断
True: DbGrid1.Canvas.Brush.color:=clcream;// file://偶数行用浅绿色显示
False: DbGrid1.Canvas.Brush.color:= clwhite;// file://奇数行用蓝色表示
end;
If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
Case DataCol mod 2 = 0 of
True :
begin
DbGrid1.Canvas.Brush.color:=$00ffff; //file://当前选中行的偶数列用红色
dbgrid1.Canvas.Font.Color:=clred;
end;
False:
begin
DbGrid1.Canvas.Brush.color:=$00ffff;// file://当前选中行的奇数列用绿色表示
dbgrid1.Canvas.Font.Color:=clred;
end;
end;
DbGrid1.Canvas.pen.mode:=pmMask;
DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
begin
self.DBGrid.Canvas.Brush.Color := clRED; //在这里更改为你想要的颜色
end; self.DBGrid.DefaultDrawColumnCell(Rect,DataCol,Column,state);