设置选中行颜色: 先将dbgrid的dgrowselected属性设为true;然后在dbgrid的DrawColumnCel事件里写: procedure TFrmQuery.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if gdSelected in state then dbgrid1.Canvas.Brush.Color:=clgreen; dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);end;
先将dbgrid的dgrowselected属性设为true;然后在dbgrid的DrawColumnCel事件里写:
procedure TFrmQuery.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if gdSelected in state then
dbgrid1.Canvas.Brush.Color:=clgreen;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);end;
1.能够修改dbgrid的数据(如果设置dgrowselected=true就不能够对数据进行修改了)
2.点击到的纪录整行变色
3.通过查询按钮,定位到的纪录整行变色
4.由于数据集重新刷新的时候还要处理一些诸如统计等事件,所以最好不要每次定位都进行数据集的refresh操作.
现在,我在DBGridDDCCDrawColumnCell事件中:
if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then
dbgridDDCC.Canvas.Brush.Color := ClSkyBlue;
dbgridDDCC.DefaultDrawDataCell(Rect,column.Field ,state);
可以实现定位到的那个cell变色,但不能够整行变色.怎么办?