Hola Mamu, para la parte de sincronización talvez te sirva utilizar la propiedad RecNo de cada uno de tus dataSet.
Lo que haría primero es ponerle a las propiedades dgRowSelect->True y dgAlwaysShowSelection->True.
Digamos que el Query1(DataSource) esta enlazado a tu DBGrid1, entonces obtienes la fila Activa con RecNo y le dices que esa fila también sea activa para tu Query2 que estara enlazado a tu otro BDGrid.
Código Delphi
[-]
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
Fila : Integer;
begin
Fila := Query1.RecNo;
Query2.RecNo := Fila;
end;
procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Fila : Integer;
begin
if (Key=vk_Up) or (Key=vk_Down) then
begin
Fila := Query1.RecNo;
Query2.RecNo := Fila;
end;
end;
Saluditos