Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Click en minimizar ventana y minimizar aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=63459)

dmassive 15-02-2009 02:33:03

Click en minimizar ventana y minimizar aplicacion
 
Buenos Dias!

Estoy con Delphi 7 y en el foro no esta claro como hacer esto, ni siquiera si es posible, por lo cual, y ante varias pruebas... ¿No se puede hacer?

Veamos, hago click en el minimizar de la ventana de un formulario y quiero ejecutar:
Código Delphi [-]
Application.Minimize;

Pero no se como llamarlo. :confused:

Pues bien, no quiero verme obligado a añadir un boton para lograrlo. Y TApplicationEvents no me sirve puesto que esos eventos son de la aplicacion y yo necesito un "OnMinimize" del formulario.

Tambien probe esto pero tampoco funciona :(
Código Delphi [-]
Procedure TFormMain.WMSYSCOMMAND(var Msg: TMessage);
begin
  if Msg.wParam = SC_MINIMIZE then
     begin
       application.Minimize;
     end
  else
     Inherited;
end;
¿Alguna Sugerencia?

Gracias!

cHackAll 15-02-2009 23:43:25

Código Delphi [-]
Application.OnMinimize

dmassive 16-02-2009 04:06:08

¿Puedes explayarte mejor? :confused:

roman 16-02-2009 09:09:50

Cita:

Empezado por dmassive (Mensaje 338171)
¿Alguna Sugerencia?

Tal como lo tienes debería funcionar, si acaso con una pequeña modificación:

Código Delphi [-]
procedure TForm2.WMSysCommand(var Msg: TMessage);
begin
  if (Msg.wParam and $FFF0 = SC_MINIMIZE) then
    Application.Minimize
  else
    inherited;
end;

De todas maneras, es extraño que quieras implementar este comportamiento para lo que parece ser el formulario principal, ya que, de hecho, es así como trabaja por defecto dicho formulario: minimizar la aplicación cuando se minimiza el formulario. El código descrito sería para otros formularios.

Quizá debas explicar mejor lo que quieres hacer.

// Saludos

dmassive 16-02-2009 16:55:50

Mi planteo era en base a toda la informacion que hay dando vueltas que no es clara, y los links hacia las soluciones son de paginas que ya no existen. Es por eso que intente abarcar todas las posibilidades para que no haya dudas... pero fallo :)

El planteo en imagenes era asi:

Cuando hago click en Minimizar:


La aplicacion queda asi:


Ese era el problema....

Pues tras probar he dado con el problema y es en la declaracion del procedimiento:

El codigo seria asi:
Código Delphi [-]
Procedure WMSYSCOMMAND(Var Msg: TMessage); Message WM_SYSCOMMAND;

Código Delphi [-]
Procedure TFormMain.WMSYSCOMMAND(Var Msg: TMessage);
Begin
  If Msg.wParam = SC_MINIMIZE Then
     Begin
          Application.Minimize;
     End
  Else
      Inherited;
End;

Ahora soy feliz... Gracias por responder.

roman 16-02-2009 17:01:16

Me quedaba claro qué es lo que querías lograr. Lo que me parece raro es que estás aplicando ese código a un formulario llamado FormMain, que, al menos por su nombre, parece ser el formulario principal de la aplicación, para el cual es innecesario aplicar ese código. De hecho, el código original de TForm, al manejar el mensaje WM_SYSCOMMAND, básicamente hace esto:

Código Delphi [-]
if Application.MainForm = Self then
  Application.Minimize;

// Saludos


La franja horaria es GMT +2. Ahora son las 13:52:11.

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