在后台执行update操作 在前台dbgrid不断刷新 如何使其能自动指向修改过后的那一行

解决方案 »

  1.   

    Delphi7从入门到精通介绍过一种方法不过是三层的你可以利用以下type
      TMyGrid = class (TDBGrid)
      end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      if cds.ChangeCount = 0 then
        cds.Refresh;
    end;procedure TForm1.cdsAfterPost(DataSet: TDataSet);
    begin
      cds.ApplyUpdates (-1);
    end;procedure TForm1.cdsAfterScroll(DataSet: TDataSet);
    begin
      // refresh current record only
      if cds.UpdateStatus = usUnModified then
        cds.RefreshRecord;
      // log operation
      Listbox1.Items.Add (cds['Emp_no']);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      i: Integer;
      bm: TBookStr;
    begin
      // refresh visible rows
      cds.DisableControls;
      // start with the current row
      i := TMyGrid(DbGrid1).Row;
      bm := cds.Book;
      try
        // get back t the first visible record
        while i > 1 do
        begin
          cds.Prior;
          Dec (i);
        end;
        // return to the current record
        i := TMyGrid(DbGrid1).Row;
        cds.Book := bm;
        // go ahead until the grid is complete
        while i < TMyGrid(DbGrid1).RowCount do
        begin
          cds.Next;
          Inc (i);
        end;
      finally
        // set back everything and refresh
        cds.Book := bm;
        cds.EnableControls;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      cds.Active := True;
    end;