Echale un vistazo en la ayuda y documentación a los ClientDataSet; Se trata de trabajar con una tabla con ésta en local; Una vez que has realizado todos los cambios, éstos se suben al servidor de una vez; Similar a los que tú estás pensando con el StringGrid. Cuando vuelcas los cambios (Inserts, deletes y modificaciones relaizadas) éstas se vuelcan al servidor y éste te genera una respuesta con los posibles errores que han ocurrido, para que tú puedas programar código asociado.
La ventaja frente a la opción del StringGrid o controles del estilo a MemoryTable, es que facilitan algo el trabajo.
Revisa documentación en:
http://search.borland.com/
Haz busqueda por los siguientes ID: 15091, 18306, 19198, 19222 y 19633