Hola,
pues como te comento, yo creo que lo mejor sería que utilizaras los eventos de campos. Eso solo lo puedes hacer si tienes los campos agregados estáticamente a la tabla.
Una vez has echo esto, tienes cuatro eventos disponibles para
cada campo.
Cuando tu estás navegando por tu DBGrid, en realidad lo que ves es una copia (caché) de los datos físicos.
El evento
OnValidate se dispara cuando se escribe un nuevo valor para un registro de los que tienes en tu caché. Dentro de este evento, como su nombre indica, puedes validar si los datos que tiene en este momento el campo son correctos o no. Si no lo son, puedes lanzar una excepción.
El evento
OnChange se dispara cada vez que hay un nuevo valor en el campo. Si antes tenías un 100 y le pones un 200, se disparará este evento, pero posteriormente a OnValidate.
Por qué te meto todo este rollo de la caché? Pues porqué hasta que la tabla que contiene los campos no haga n post o confirmación del registro, estos datos solo están en la caché, no en la BD.
Yo creo que con esto puedes solucionar el problema
Suerte.