En dicho evento, puedes mirar el valor de clave primaria, y si es null, Cancelar en lugar de abortar.
Código Delphi
[-]
if tabla1CAmpoprimario.isnull then
tabla1.Cancel;
Abort lanza una excepción silenciosa, por ese motivo se corta el flujo del programa, quedando el registro en modo edición pero sin guardar.
Edito: Al intentar cambiar de registro, el Dataset realiza un Post de la tabla, por tanto, se vuelve a lanzar otra vez un Abort, y te quedas "clavado" en ese registro.
Saludos