有DBGrid2,ADOStoredProc2等,第一次ADOStoredProc2调用存储过程后,查到的数据在DBGrid2中显示,在DBGrid2中选中某条记录,再次用ADOStoredProc2调用同一存储过程。此时,需要dbgrid2中上次被选中的那条记录仍然被选中(不仅仅是内部选中了,还要那条记录成高亮显示)请问如何实现?

解决方案 »

  1.   

    dbgrid2.datasource.dataset.當前記錄呀。
      

  2.   

    uses 
      DB;
    用法:
    var Tb:TBookMark;
    begin
      with Query1 do begin
        Tb:=GetBookMark;
        Close; Open;
        Try 
          GotoBookMark(Tb);
        except
          Last;
        end;
      end;
    end;也可以用locate
      

  3.   

    记下上次的那条记录的id   1 ADOQuery1.MoveBy(id);
    2 定义 type
         TMyDBGrid=class(TDBGrid);
    3  procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     with TMyDBGrid(Sender) do
     begin
       if DataLink.ActiveRecord=Row-1 then
       begin
         Canvas.Font.Color:=clWhite;
         Canvas.Brush.Color:=$00800040;
       end
       else
       begin
         Canvas.Brush.Color:=clBtnFace;
         Canvas.Font.Color:=Clred;
       end;
       DefaultDrawColumnCell(Rect,DataCol,Column,State);
     end;
    end;
      

  4.   

    DBGrid2所对应的数据集
    或者用DBGrid2.DataSource.Dataset替换DBGrid2
      

  5.   

    写错了
    用DBGrid2.DataSource.Dataset替换Query1
      

  6.   

    bee2518,你给的这段代码应该写在什么位置呢?是在ADOStoredProc2第二次调用存储过程之前还是之后呢?
      

  7.   

    http://www.pconline.com.cn/pcedu/empolder/gj/delphi/0402/320350.html
      

  8.   

    http://www.lihuasoft.net/article/show.php?id=874