Te sugiero que utilices la propiedad Recno de las tablas/querys. Cuando abres una tabla/query hay un campo que es recno que te dice el nº de registro que se trata.
Para hacerlo. crea un campo calculado en la query Detalle, de tipo integer.
En el evento DrawDataCell del grid donde visualizas los datos, pon el siguiente código.
Código Delphi
[-]
if field.Name='TablaCampo' and Tabla.RecCount> 0
then
DBGrid.Canvas.TextOut(Rect.left+5, Rect.Top +5, inttostr(Tabla.recno));
Ten en cuenta que recno es un campo calculado por delphi, que no puedes editarlo, y que dependiendo del campo por el que ordenes la tabla detalle te numerará las lineas.
Espero que te sea util.
Un saludo