Hola pablonil.
Creo que lo más sencillo es pasar como argumentos de la función al
TClientDataSet y un
TListBookmark con los registros que deses.
Como un ejemplo simplificado te pongo esta función que muestra en un
TListBox, un campo de los que fueron seleccionados en un
TDBGrid:
Código Delphi
[-]
...
procedure TForm1.Funcion(CDS: TClientDataSet; ListBM: TBookmarkList);
var
i: Integer;
begin
for i:= 0 to List.Count-1 do
begin
CDS.GotoBookmark(Pointer(ListBM[i]));
ListBox1.Items.Add(CDS.FieldByName('Campo1').AsString);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Funcion(ClientDataSet1, DBGrid1.SelectedRows);
end;
...
Saludos.