各位大侠,请一下DBGrid的显的一个显示问题.
1、当DBGrid中的属性Options下的dgRowSelect值为false,可以用鼠标选取某的当前值,但当前行的颜色不能改变,如果当dgRowSelect值为True时刚好与上述出现的结果相反。
2、我想要的结果如下:
    鼠标选取某列的当前值要有焦点,同时当前行的颜色也要能改变。请教各位如何解决。

解决方案 »

  1.   

    要自己画的,再数据集的AfterScroll事件中记录当前的数据集的书签,再OnDrawColumnCell中判断是不是当前记录有选择的绘制procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
      ACanvas: TCanvas;
    begin
      ACanvas := DBGrid1.Canvas;
      //记录当前数据记录
      if CurBookMark = Column.Field.DataSet.Book then
        ACanvas.Brush.Color := clRed
      else
       ACanvas.Brush.Color := DBGrid1.Color;
      DBGrid1.DefaultDrawColumnCell(Rect,DataCol, Column, State);
    end;procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
    begin
      CurBookMark := DataSet.Book; //记录当前数据集的书签位置
    end;
      

  2.   


    type
      TForm1 = class(TForm)    ......  private
        { Private declarations }
        CurBookMark: String;//定义一个成员变量
      public
        { Public declarations }
      end;