Pues lo más simple es lo más cómodo. En el Evento OnNewRecord añades:
Código Delphi
[-]
tabla.FieldByName('nombrecampo').AsXXX := lo que sea
tabla.Post;
tabla.edit;
Así el usuario nota un parpadeo del DBNavigator, pero el registro se guarda y después queda en modo edición. Esta idea es lo que le gusta al usuario, si está dando de alta el cliente 24 cuando le dé a guardar, que siga siendo el cliente 24.
Si usas la otra forma, (buscar la clave primaria en el evento BeforePost), el usuario puede ver que está insertando el cliente nº 24, pero al grabar, cambia y obtiene el 25, los usuarios ven un poco raro eso.
Saludos