Nuevamente, repito. Olvidate de pensar en los grids como si fueran los datos. Toda la manipulación la debes hacer en las tablas.
Con esto copias los campos del registro seleccionado de la tabla productos a la de detalles. OBviamente solo se copian los campos que aparecen en ambas.
Código:
TablaDetalles.Append;
TablaDetalles.FieldByName('nombre').AsString := TablaProductos.FieldByName('nombre').AsString;
TablaDetalles.FieldByName('precio').AsCurrency := TablaProductos.FieldByNAme('precio').AsCurrency;
TablaDetalles.Post;
Los campos cantidad y subtotal debes llenarlos tu mismo, al menos el de cantidad ya que el subtotal se puede calcular cada vez que cambies "cantidad".
Y como te decía y puedes observar, no tienes que meterte para nada con los grids ya que éstos reflejarán automáticamente los cambios.