Ver Mensaje Individual
  #3  
Antiguo 27-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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' {frmMain},
  uLogin in 'uLogin.pas' {frmLogin};

{$R *.res}

var
  Ok: Boolean;

begin
  // Dejas que la aplicación se inicialice normalmente
  Application.Initialize;

  // Creas el formulario del login "a mano"
  frmLogin := TfrmLogin.Create(nil);
  try
    // Guardas el resultado del login
    Ok := (frmLogin.ShowModal = mrOk);

    // Si fue exitoso, creas el formulario principal
    if Ok then
      Application.CreateForm(TfrmMain, frmMain);
  finally
    // Liberas el formulario del login
    frmLogin.Free;
  end;

  // En todo caso, dejas que la aplicación siga su curso
  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
Responder Con Cita