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;
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;