El problema es que al salir del registro nuevo antes de validarlo, el DBGrid valida los campos de forma automática (salvo que el foco lo posicionemos fuera del DBGrid). Una posible solución a esto sería crear una variable booleana que almacenara si el ClientDataSet está en edición o inserción (la pondríamos a True en los eventos AfterInsert y AfterEdit) y que sólo almacenara False cuando el usuario aplicó explícitamente los cambios (es decir, en el evento del botón u opción de menú que tengamos para ello) y, tambien, cuando se canceló o se eliminó el registro. (Otra solución sería crear nuestro propio DBGrid para controlar este caso)
Otra cosa, para que la solución de Lepe funcione, tendrías que crear un índice local (es decir, en el ClientDataSet) basado en el campo de ordenación.
Saludos!
|