No estaría de más que comprobases el estado de la tabla antes de grabar, para ver si esta en modo edición, sino no puedes hacer el post.
Código Delphi
[-]
if ModuloDatos.TblDetproducto.state = dsedit then
ModuloDatos.TblDetproducto.post
en lo demás estoy totalmente de acuerdo con Roman.
Saludos, Tony