A ver, vamos a suponer que tienes tablas de ventas, articulos y articulosVenta (detalles de la venta):
articulo = (articuloId, ... )
venta = (ventaId, ...)
articulosVenta = (ventaId, articuloId, ...)
Un primer dbgrid lo conectas a la tabla de ventas. El segundo dbgrid puedes conectarlo a una consulta SQL:
Código SQL
[-]
select ventaId, articulo.*
from articulo, articulosVenta
where articulo.artculoId = articulosVenta.articuloId
El dataset que uses para la consulta lo pones como tabla detalle del dataset que uses para las ventas. Eso hace que el de la consulta sólo muestre los detalles de la venta actual.
Cuand inicias una venta agregas un registro a la tabla de ventas. Para agregar artículos, haces tu consulta que trae los datos del artículo e insertas un nuevo registro en la tabla articulosVenta poniendo en el campo ventaId el valor del ID de la nueva venta. Haces un refreseh de la consulta del segundo dbgrid para que refleje al artículo insertado.
No es la única manera de hacerlo pero para que te des una idea.
// Saludos