Hola de nuevo.
Con respecto al problema se me ocurre que podrías almacenar la posición actual, procesar los registros seleccionados y volver a reposicionar.
Un ejemplo sencillo con un TMemo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
BM: TBookMarkStr;
begin
Memo1.Clear;
try
DataSet.DisableControls; BM:= DBGrid1.DataSource.DataSet.Bookmark; for i:= 0 to DBGRid1.SelectedRows.Count-1 do
begin
DataSet.Bookmark:= DBGrid1.SelectedRows.Items[i];
Memo1.Lines.Add(DBGrid1.SelectedField.AsString); end;
DBGrid1.DataSource.DataSet.Bookmark:= BM; finally
DataSet.EnableControls; end;
end;
Saludos.