Esto que describes es el comportamiento normal cuando el formulario que se minimiza no es el principal. El formulario principal es el primero que se crea con Application.CreateForm, como puedes ver en el código del archivo dpr del proyecto (Project|View Source).
Lo que puedes hacer entonces, es evitar que el formulario del
login se cree antes del formulario principal (quitándolo de la sección Auto-create en Project|Options) y creándolo tú mismo en el archivo dpr:
Código Delphi
[-]
program Project1;
uses
Controls,
Forms,
uMain in 'uMain.pas' ,
uLogin in 'uLogin.pas' ;
{$R *.res}
var
Ok: Boolean;
begin
Application.Initialize;
frmLogin := TfrmLogin.Create(nil);
try
Ok := (frmLogin.ShowModal = mrOk);
if Ok then
Application.CreateForm(TfrmMain, frmMain);
finally
frmLogin.Free;
end;
Application.Run;
end.
Si el usuario cancela, el resultado de frmLogin.ShowModal será distinto de mrOk, por lo que el valor de Ok será
false y el formulario principal no se crea. Al no haber formulario principal, el método Application.Run simplemente termina, y termina así la aplicación. En otro caso, el formulario principal se crea, y la aplicación sigue su curso normal.
// Saludos