Ir al contenido


Foto

¿Cómo determino si la aplicación o Forma está minimizado?


  • Por favor identifícate para responder
30 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 16 agosto 2009 - 08:26

Tal como lo dice el tí­tulo, tengo este siguiente procedimiento:



delphi
  1. procedure TForm1.SongPopup;
  2. begin
  3.   if WindowState = wsMinimized then begin
  4.     FPopUp := TFPopUp.Create(self);
  5.     FPopUp.Top := Screen.Width;
  6.     FPopUp.Left := Screen.Height - 125;
  7.     FPopUp.Show;
  8.   end;
  9. end;



Pero no me funciona, es un popup que aparece cuando toca una nueva canción siempre y cuando si la aplicación o la Forma esté minimizada pero no me funciona, ¿tienen alguna mejor idea?.

Saludos.
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 17 agosto 2009 - 09:25

Tal como lo dice el tí­tulo, tengo este siguiente procedimiento:



delphi
  1. procedure TForm1.SongPopup;
  2. begin
  3.   if WindowState = wsMinimized then begin
  4.     FPopUp := TFPopUp.Create(self);
  5.     FPopUp.Top := Screen.Width;
  6.     FPopUp.Left := Screen.Height - 125;
  7.     FPopUp.Show;
  8.   end;
  9. end;



Pero no me funciona, es un popup que aparece cuando toca una nueva canción siempre y cuando si la aplicación o la Forma esté minimizada pero no me funciona, ¿tienen alguna mejor idea?.

Saludos.


Has probado este cambio??



delphi
  1. procedure TForm1.SongPopup;
  2. begin
  3.   if WindowState = wsMinimized then begin
  4.     FPopUp := TFPopUp.Create(self);
  5.     FPopUp.Top := Screen.Width;
  6.     FPopUp.Left := Screen.Height - 125;
  7.     FPopUp.WindowState = wsNormal;
  8.   end;
  9. end;



No se si esto sirva pero prueba y avisa
  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 04:27

Pues no, no me funcionó.

Saludos.
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 17 agosto 2009 - 04:42

Hola

Comienza por modificar el Top y el Left, están invertidos :p



delphi
  1. procedure TForm1.SongPopup;
  2. begin
  3.   if WindowState = wsMinimized then begin
  4.     FPopUp := TFPopUp.Create(self);
  5.     FPopUp.Top := Screen.Height - FPopUp.Height;  // Pos asi como, jejejeje
  6.     FPopUp.Left := Screen.Width - (FPopUp.Width + 15);
  7.     FPopUp.WindowState = wsNormal;
  8.   end;
  9. end;



Salud OS
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 04:42

Gracias bro. así­ queda mejor :p :$.

Estaba pensando, al estar minimizado la aplicación estoy suponiendo que el Popup también se queda minimizada, que por tal motivo no se muestre correctamente, por ello pienso, ¿es mejor crear la form desde una DLL o como un aplicativo separado donde le pase los parámetros?.

Saludos.
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 17 agosto 2009 - 04:44

Gracias bro. así­ queda mejor :p :$


:cry:, así­ ni como reir  :embarrassed:

Salud OS
  • 0

#7 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 17 agosto 2009 - 05:10

¿es mejor crear la form desde una DLL o como un aplicativo separado donde le pase los parámetros?.

Saludos.


Pues entre ambas opciones me parece más adecuado y quizá seguro usar la dll.


Saludos!
  • 0

#8 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 17 agosto 2009 - 06:28

Hola
Me estoy haciendo viejo, no entiendo la pregunta. :
Para ver si esta minimizado yo veo en la barrita de abajo, si ta, es que esta minimizada. :p
Saludos
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 06:37

Mejorando un poco el code está quedando así­:



delphi
  1. procedure TForm1.SongPopup;
  2. begin
  3.     FPopUp := TFPopUp.Create(self);
  4.     FPopUp.Top := Screen.Height - FPopUp.Height;
  5.     FPopUp.Left := Screen.Width - (FPopUp.Width + 15);
  6.     FPopUp.Show;
  7.     SetForegroundWindow(FPopUp.Handle);
  8. end;



Lo más extraño es si lo meto en un bloque:



delphi
  1. if WindowsState = wsMinimized then..



Para que salga sólo cuando esté minimizada no funciona, ¿alguna idea?

Saludos.
  • 0

#10 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 17 agosto 2009 - 06:51

Hola
Me extraña mucho esto:


delphi
  1. if WindowsState = wsMinimized then..


Tengo un ejemplo para minimizar el form a la par del reloj, bueno, por ahi y no veo ese codigo. :s
Seguro lo conoces amigo, pero pues por si acaso aqui esta.
Saludos

Archivos adjuntos


  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 17 agosto 2009 - 07:00

Hola

Puedes hacer uso de algo como esto.



delphi
  1.   private
  2.     { Private declarations }
  3.     procedure WMSysCommand(var Msg: TWMSysCommand);
  4.         message WM_SYSCOMMAND;
  5.  
  6.  
  7. procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
  8. begin
  9.   if (Msg.CmdType = SC_MINIMIZE) then begin
  10.     Form2      := TForm2.Create(self);
  11.     Form2.Top  := Screen.Height - Form2.Height;
  12.     Form2.Left := Screen.Width - (Form2.Width+15);
  13.     Form2.Show;
  14.     SetForegroundWindow(form2.Handle);;
  15.     self.WindowState := wsMinimized;
  16.   end;
  17. end;



Veo que hay algunos detalles que le veo, será cuestión de depurar el code.

Salud OS
  • 0

#12 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 07:14

Gracias a ambos, carlos aunque eso no es lo que busco pero me será útil en la misma aplicación que estoy haciendo :D, viendo el code de Egostar y el tuyo hice lo siguiente:



delphi
  1. procedure TForm1.SongPopup;
  2. var msg: TWMSysCommand;
  3. begin
  4.   if (Msg.CmdType = SC_MINIMIZE) then begin
  5.     FPopUp := TFPopUp.Create(self);
  6.     FPopUp.Top := Screen.Height - FPopUp.Height;
  7.     FPopUp.Left := Screen.Width - (FPopUp.Width + 15);
  8.     FPopUp.Show;
  9.     SetForegroundWindow(FPopUp.Handle);
  10.   end;
  11. end;



Pero aún no funciona, por lo que veo sirve en el momento de minimizar y no cuando está minimizado. :(.

Saludos.
  • 0

#13 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 17 agosto 2009 - 07:18

Hola
Sigo sin entender que es lo que estas minimizando?.
Y que quieres hacer creando el popup de esa manera?
Explica haber si aprendo amigo.
Saludos
  • 0

#14 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 07:23

Hola
Sigo sin entender que es lo que estas minimizando?.
Y que quieres hacer creando el popup de esa manera?
Explica haber si aprendo amigo.
Saludos


Pues claro que te explico compañero, fí­jate, realizo un player tipo Jukebox, y tiene una lista de reproducción, cuando está minimizado la aplicación, o sea, en la barra ese de abajo, cuando toca una canción nueva me debe aparecer el popup con la información de la canción siempre y cuando el estado de la aplicación esté minimizado y no maximizada, entonces, en los codes anteriores al parecer no estamos capturando el estado real de la aplicación que es el minimized, o sea:

Si la aplicación está minimizada entonces que me salga el popup

Equivalente a:



delphi
  1. if WindowState = wsMinimized then
  2.   Popup!;



Saludos :D
  • 0

#15 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 17 agosto 2009 - 07:31

¡¡Momento que soy lento!!

estas preguntanto si form1 esta minimizado y luego muestras fPopUp,  porque no preguntas si la aplicacion esta minimizada???
  • 0

#16 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 07:35

¡¡Momento que soy lento!!

estas preguntanto si form1 esta minimizado y luego muestras fPopUp,  porque no preguntas si la aplicacion esta minimizada???


¿Y qué estoy haciendo?  *-)
  • 0

#17 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 07:39

Bueno quise hacer una "bandera" con una variable booleana, de la siguiente manera:



delphi
  1. procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
  2. begin
  3.   if Msg.CmdType = SC_MINIMIZE then
  4.     Minimizado := True
  5.   else
  6.     Minimizado := False;
  7. end;





delphi
  1. if Minimizado then begin
  2.   //si está minimizado el programa muestra un popup de la canción nueva
  3.   SongPopup;
  4. end;



pues ella funciona, ¿problema?, ¡No me minimiza ni maximiza ni cierra la aplicación por los botones que están en la parte superior derecha sino por click en la barra! :s
  • 0

#18 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 17 agosto 2009 - 07:47

¿Y porque no dejar que el popup funcione también con la ventana maximizada?... asi como trabaja Winamp por ejemplo, es una idea, no por dejar el code, sino por cuestiones de usabilidad :D


Saludos!
  • 0

#19 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 17 agosto 2009 - 07:49

el WMSysCommand(var Msg: TWMSysCommand); como lo declarastes...


  • 0

#20 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 agosto 2009 - 07:51

el WMSysCommand(var Msg: TWMSysCommand); como lo declarastes...




delphi
  1. private
  2.     { Private declarations }
  3.     procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;


  • 0




IP.Board spam blocked by CleanTalk.