Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-10-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Hacer parpadear y dejar de hacerlo en la Barra de Tareas

Hola !

No termino de conseguirlo ...

Tengo una aplicación con un TrayIcon minimizada. No aparece ni en la barra de tareas, ni tampoco en Alt+Tab. Para minimizarla utilizo :

Código Delphi [-]
Application.ShowMainForm := False;
Application.Minimize;
MiForm.Visible := False;
MiForm.Hide;
ShowWindow(Application.Handle, SW_HIDE);

Lleva incorporado un Timer con una activación automática que se produce con una determinada condición. Cuando se dá esa condición lo que pretendo es que se avise al usuario con su correspodiente recuadro en la barra de tareas, y que este aparezca parpadeando hasta que el usuario decida abrir dicha ventana.

Para restaurar la aplicación cuando se produce el evento correspondiente utilizo :
Código Delphi [-]
Application.Restore;
Application.ShowMainForm := True;
MiForm.Visible := True;
Timer1.Enabled := True;
teniendo en el Timer1 y su evento OnTimer :
Código Delphi [-]
procedure TMiForm.Timer1Timer(Sender: TObject);
begin
  FlashWindow(Application.Handle, True);
end;

En principio todo bien.

Lo que pasa es que no logro desactivar el Flash de la aplicación en la barra de tareas de manera lógica.

Pretendo que se quede intermitente hasta que el usuario seleccione la aplicación, bien mediante click con el ratón en la barra de tareas, o bien mediante Alt+Tab.

Lo que me pasa es que no sé en qué evento del Form, o de qué manera y donde, debo de desactivar la intermitencia.

Todos los eventos del Form, OnPaint, OnActivate, ... etc, se activan cuando ejecute Application.Restore por lo tanto entiendo que no me valen dichos eventos ya que no deseo traer tampoco la aplicación directamente a primer plano.

Cuando hago click sobre la barra de tareas, no se me activa tampoco ningún otro evento. O al menos, yo desconozco cual.

Tampoco puedo interceptar ningún mensaje de Restore u otro de la propia API del windows cuando el usuario hace click en la barra de tareas, ya que MiForm ya se encuentra Repintado y Redimensionado en segundo plano.

A ver si me podeis echar una mano e indicarme como hacer esto Mucas gracias por vuestros consejos.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 03-10-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Pues mira por donde ... después de bastantes horas intentando encontrar el método adecuado, y una vez que me decido a postearlo aquí, encuentro la solución.

Consigo apagar el parpadeo en la barra de tareas de la siguiente manera :

Código Delphi [-]
procedure TMiForm.Timer1Timer(Sender: TObject);
var
  FWinfo: TFlashWInfo;
begin
  if GetForeGroundWindow() <> MiForm.Handle then
    FlashWindow(Application.Handle, True)
  else begin
    FWinfo.cbSize    := 20;
    FWinfo.hwnd      := Application.Handle;
    FWinfo.dwflags   := FLASHW_STOP;
    FWinfo.ucount    := 0;
    FWinfo.dwtimeout := 0;
    FlashWindowEx(FWinfo);
    Timer1.Enabled := False;
  end;
end;

Gracias a todos lo que pudieran haberse interesado en este hilo.
__________________
Piensa siempre en positivo !
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
hacer parpader boton de la barra de tareas halcon_rojo Varios 3 12-04-2006 23:45:28
No en la Barra de Tareas D-MO Varios 4 13-10-2005 00:55:18
Barra de tareas Esau Varios 5 17-02-2005 20:47:16
barra de tareas agora18 Varios 1 17-02-2004 02:01:39
Barra de Tareas frankmch Varios 3 04-09-2003 15:58:16


La franja horaria es GMT +2. Ahora son las 03:14:55.


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
Copyright 1996-2007 Club Delphi