Hola Diego.
En principio yo no haría que el form de autentificación fuera el principal, Sí lo llamaría desde el evento
OnShow del form principal y verificaría la condición de salida para decidir si termina la aplicación o continua.
Más o menos de este modo:
Código:
void __fastcall TfrMain::FormShow(TObject *Sender)
{
frLogin = new TfrLogin(this);
int ExitResult = frLogin->ShowModal();
delete frLogin;
if (ExitResult == mrCancel)
Application->Terminate();
}
Previamente hay que quitar frLogin de Proyect->Options->Forms->Auto-create forms.
Un saludo.