Eso es porque quien se encarga de asignar el nuevo valor es el motor de base de datos. Así que hasta que éste recibe de parte del programa la instrucción "Insert Into", es decir, hasta que haces el ApplyUpdates, no se asignará el valor al campo.
No has puesto una copia exacta del mensaje de error que te aparece al intentar guardar el registro, pero es casi seguro que la causa esté en la propiedad
Required del objeto campo. Hay que ponerla en False (tanto en el TSQLTable / TSQLQuery / TSQLDataSet como en el conjunto de datos cliente) para que te deje guardar el registro en memoria y luego enviarlo al servidor sin haberle dado valor a ese campo.
Pero si lo que necesitas es que el nuevo valor esté disponible visualmente desde que se empieza la captura del nuevo registro, temo que tendrás que cambiar el tipo del campo en la base de datos por un simple Integer. EDITO: Bueno, no necesariamente; dependerá del enfoque que manejes respecto a ese campo autoincrementado y si hay más usuarios que puedan agregar registros a la tabla simultáneamente.
Saludos.
Al González.