Hacer parpadear el caption de un formulario
Artículo por Club Developers · 31 diciembre 2005
2908 vistas
Para notificar al usuario que la aplicación espera una intervención por su parte (confirmación de un mensaje, evento a validar,....) cuando la aplicación no tiene el foco, podemos hacer parpadear la ventana usando el API FlashWindow. El primer parámetro que espera la función es el handle de la ventana y el segundo un booleano que indica si tiene que hacerse o no el parpadeo.
Para ello usaremos un TTimer en el que estableceremos su propiedad Interval a 500ms y codificaremos su evento OnTimer de la siguiente manera:
También podemos crear una clase que encapsule esta API
Después de la creación, arrancaremos la notificación haciendo una llamada al método StartNotify y lo pararemos con EndNotify.
Para ello usaremos un TTimer en el que estableceremos su propiedad Interval a 500ms y codificaremos su evento OnTimer de la siguiente manera:
delphi
FlashWindow(Form1.Handle,True);
También podemos crear una clase que encapsule esta API
delphi
TFlasher = class private FTimer : TTimer; FHandle : Cardinal; procedure DoFlash(Sender : TObject); public procedure StartNotify; procedure EndNotify; constructor Create(ObjectToFlash : TWinControl; AInterval : Cardinal = 500); destructor Destroy; end; { TFlasher } procedure TFlasher.DoFlash(Sender : TObject); begin FlashWindow(FHandle,True); FlashWindow(Application.Handle,True); end; constructor TFlasher.Create(ObjectToFlash : TWinControl; AInterval: Cardinal); begin FTimer := TTimer.Create(nil); FTimer.Enabled := False; FTimer.Interval := AInterval; FTimer.OnTimer := DoFlash; FHandle := ObjectToFlash.Handle; end; destructor TFlasher.Destroy; begin if Assigned(FTimer) then FreeAndNil(FTimer); end; procedure TFlasher.EndNotify; begin FTimer.Enabled := False; FlashWindow(FHandle, False); end; procedure TFlasher.StartNotify; begin FTimer.Enabled := True; DoFlash(nil); end; Function TFlasher.Actif:Boolean; begin Result:=FTimer.Enabled; end;
Después de la creación, arrancaremos la notificación haciendo una llamada al método StartNotify y lo pararemos con EndNotify.