Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cachar el evento minimizar del form (https://www.clubdelphi.com/foros/showthread.php?t=63028)

darkerbyte 26-01-2009 22:11:25

Cachar el evento minimizar del form
 
Hola mis estimados colegas.

Tengo hecha una aplicación que para iniciar te muestra un form pidiendo tu nombre de usuario y password. Una vez proporcionados, oculto la form (visible:=false) y creo otra form que funge como principal. El punto es que cuando el usuario minimiza esta form, en lugar de minimizarse toda la aplicación a la barra de tareas de Windows, se minimiza solo la form quedando un recuadro encima de la barra de tareas, por lo que cuando hago click sobre el nombre de mi aplicacion en la barra de tareas del windows ya no se restaura. Tengo que restaurarla desde la barra que queda encima.
¿Cómo puedo cachar el evento de minimizar del form, es decir cuando el usuario miniza el form, para sustituirla por Application.minimize ?


Muchas gracias por su ayuda.

Caro 27-01-2009 00:29:15

Hola darkerbyte, revisa este hilo http://www.clubdelphi.com/foros/showthread.php?t=58538 en el último mensaje esta la solución.

Saluditos

roman 27-01-2009 00:37:10

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

darkerbyte 27-01-2009 16:55:56

Eureka!
 
Wow, espero algún día ser como ustedes... :o


La franja horaria es GMT +2. Ahora son las 12:47:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi