怎样在使用了数据集的LOCATE定位后,设置dbgrid中定位的行的颜色?

解决方案 »

  1.   

    设置选中行颜色:
    先将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;
      

  2.   

    我需要:
      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变色,但不能够整行变色.怎么办?