有没有最简单的方法改变ADOQuery.Next前的那行数据的背景色.除此之外原来的默认样式不变

解决方案 »

  1.   

    ......
    var
      Form1: TForm1;implementationvar iRow:integer;{$R *.dfm}procedure TForm1.ADOQuery1BeforeScroll(DataSet: TDataSet);
    begin
      iRow:=ADOQuery1.RecNo;
      DBGrid1.Refresh;
    end;procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if iRow<0 then exit;
      if ADOQuery1.RecNo=iRow then DBGrid1.Canvas.Brush.Color:=clSkyBlue;//原焦点记录用clSkyBlue颜色显示
      DBGrid1.Canvas.FillRect(Rect);
      DBGrid1.DefaultDrawDataCell(Rect,Field,State);
    end;
    ......
      

  2.   

    有这样一种方式不知道能不能满足你的需求
    1.定义private 变量
      rowid:integer;或其他类型用于标示一条记录;
    2.在执行adoquery.next的事件中写如下代码
      rowid:=adoquery.fieldbyname('rowid').value;
      dbgrid.refesh;对dbgrid的ondrawcolumncell事件做如下处理,
       if (sender as TDBGrideh).DataSource.DataSet.FieldByName       ('rowid').Value=rowid then      (sender as TDBGrideh).Canvas.Brush.Color:=clyellow
        else
          (sender as TDBGrideh).Canvas.Brush.Style:=bsClear; //如果在用其它样式,可以在此处做适当修改sender as TDBGrideh).DefaultDrawColumnCell(rect,datacol,column,state);
      

  3.   

    To:gzzai
     你这个可以实现,但指向过的数据怎么才能一直保持这种样式呢
      

  4.   


    var i:Integer;
    var s:TStrings;procedure TForm1.ADOQuery1BeforeScroll(DataSet: TDataSet);
    begin
      i:=ADOQuery1.RecNo;
      if s.IndexOf(IntToStr(i))=-1 then  s.Add(IntToStr(i));
      //ShowMessage(s.Text);
    end;procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    var
     i_:Integer;
    begin
      for i_:=0 to s.Count-1 do
        if StrToInt(s[i_]) >0 then
          if ADOQuery1.RecNo=StrToInt(s[i_]) then DBGrid1.Canvas.Brush.Color:=clSkyBlue;  DBGrid1.Canvas.FillRect(Rect);
      DBGrid1.DefaultDrawDataCell(Rect,Field,State);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      s:=TStringList.Create;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      s.Free;
    end;