我的表单上用了TDBgrid、TADOQuery等控件为了计算数据库一个数字字段的和,在事件过程中我用了下面循环,可是当循环结束时,光标无法回到TDBgrid的第1行,请问TDBgrid有什么方法能把光标回到第1行?......
with adoquery3 do
begin
  first;
  while not Eof do begin
       v_yucun:=v_yucun+fieldbyname('yucun').AsInteger;
    next;
    end;
end;
.....

解决方案 »

  1.   


    var
      BM: TBook;
    begin
      inherited;
      with adoquery3 do
      begin
        BM := GetBook;
        DisableControls;
        First;
        while not Eof do
        begin
          v_yucun:=v_yucun+fieldbyname('yucun').AsInteger;
          Next;
        end;
        EnableControls;
        {下面 第1个是返回你循环之前的位置,第2个是
        返回第一条}
        {1:}GotoBook(BM); FreeBook(BM);
        {2:}First;
      end;
    end;
      

  2.   

    wellnj,谢谢你了!这样写后比原来好多(不会出现屏幕滚动的感觉),但是,光标还是不会回到TDBgrid的第1行,而是跑到最后1行去了
      

  3.   

    没有排序,是因为少打入了下面3行,现在好了,很感谢你!
        {1:}GotoBook(BM); FreeBook(BM);
        {2:}First;