La fila es fácil ya que tu dbgrid esta moviendo el propio cursor de tu consulta asi que en el momento de posicionarte en una determinada fila puedes preguntar por cualquier campo identificativo/indice de la consulta y por ejemplo a su vez hacer un locate en una tabla.
Código Delphi
[-]
tutabla.locate ("campoindicetabla", query1.fieldbyname("campoindice").value,[]);
Saludos, Tony