Precisamente te da ese error, porque estás intentando modificar el valor de un campo
ANTES del DataSet.Edit.
Te recomiendo leer la ayuda de los temas:
- TDataSet.Edit
- TDataSet.Insert
- TDataSet.Post
- TDataSet.State
Debes tener un problema de "sincronía" en la ejecución de tus procesos, te recomiendo poner un BreakPoint en el Edit y otro en el Post, y te darás cuenta que llega a modificar el campo en estado Browse.
Saludos!