SysTrayIcon
#21
Posted 31 October 2014 - 01:22 AM
Se trata de permitir que desde el evento OnMinimize de TSysTrayIcon, se puedan realizar cambios en sus propiedades Visible y Hide, antes de minimizarse en el SysTray o en la barra e tareas. Se trata de poder tomar y/o cambiar esa decisión justo en el momento de minimizar la aplicación.
Saludos.
#22
Posted 06 May 2015 - 05:17 PM
Repongo los archivos subidos, tras la pérdida con la última mudanza, en el mensaje inicial del hilo.
Saludos.
#23
Posted 25 March 2016 - 10:47 AM
Actualizo el control SystrayIcon tras reportar un bug cuando el form principal hace una llamada a
Application.ShowMainForm:= False;
Ahora admite la expresión anterior y la aplicación se inicia sin ventana, pudiendo ser restaurada desde el SysTray.
El componente está probado en Builder 5 y delphi 6 y 7. Acompaño el enlace de descarga en el mensaje inicial del hilo.
Saludos.
#24
Posted 02 April 2016 - 11:47 AM
- If a user passes the mouse pointer over an icon with which a balloon tooltip is associated, the version 6.0 Shell (Windows XP)sends the following messages.
- NIN_BALLOONSHOW - Sent when the balloon is shown (balloons are queued).
- NIN_BALLOONHIDE - Sent when the balloon disappears—for example, when the icon is deleted. This message is not sent if the balloon is dismissed because of a timeout or a mouse click.
- NIN_BALLOONTIMEOUT - Sent when the balloon is dismissed because of a timeout.
- NIN_BALLOONUSERCLICK - Sent when the balloon is dismissed because of a mouse click.
El componente está probado en Builder 5 y 6 y en delphi 6 y 7. Posiblemente funcione en versiones posteriores.
Acompaño el enlace de descarga en el mensaje inicial del hilo.
Saludos.
#25
Posted 07 April 2016 - 06:31 PM
Me han pedido que añada un TimeOut a la notificación en el SysTray. Lo he implementado aprovechando que había añadido las respuestas en la anterior versión a NIN_BALLOONSHOW, NIN_BALLOONHIDE, NIN_BALLOONUSERCLICK y NIN_BALLOONTIMEOUT
El funcionamiento es diferente si se trata de WinXP que en S.O. superiores.
1.- En WinXP he implementado un Timer cuyo intervalo lo maneja la propiedad BalloonInterval del componente TSysTrayIcon.
2.- Para el resto de SS.OO. La solución me gusta algo menos pues me obliga a cambiar la configuración del S.O. en SPI_SETMESSAGEDURATION. Esto cambia el TimeOut de todas las notificaciones de la sesión. Afortunadamente la pila de notificaciones no admite otra hasta que no termina la primera, eso me permite restaurar el valor que tenía configurado el sistema y ser transparente al usuario. El juego se hace con la API SystemParametersInfo:
procedure TSysTrayIcon.DoBalloonShow(); var Interval: integer; begin FBalloonTimer.Enabled:= true; Interval:= BalloonInterval div 1000; SystemParametersInfo(SPI_GETMESSAGEDURATION, 0, @SystemNotificationTimeOut, SPIF_SENDCHANGE); SystemParametersInfo(SPI_SETMESSAGEDURATION, 0, Pointer(Interval), SPIF_SENDCHANGE); if @FOnBalloonShow <> nil then FOnBalloonShow(self); end; procedure TSysTrayIcon.DoBalloonHide; begin FBalloonTimer.Enabled:= false; SystemParametersInfo(SPI_SETMESSAGEDURATION, 0, Pointer(SystemNotificationTimeOut), SPIF_SENDCHANGE); if @FOnBalloonHide <> nil then FOnBalloonHide(self); end;
En WinXP podríamos colocar cualquier límite al valor de BalloonInterval pero he decidido que sean de 5 segundos a 5 minutos, la razón es por que esos son los límites que impone win8 y win10.
Los nuevos enlaces, junto con los antiguos, los dejo en el mensaje inicial del hilo.
Saludos.
#26
Posted 07 April 2016 - 06:38 PM
Genial amigo
#27
Posted 07 April 2020 - 12:40 PM
Buenas amigo Escafandra, siento revivir un tema tan antiguo pero he estado muy alejado de este mundillo y estoy desempolvando todo y quiero instalar este componente en Embarcadero C++Builder 2010 y no veo la manera de como hacerlo. ¿podrias ayudarme ahora que estamos confinados?
#28
Posted 09 April 2020 - 10:03 AM
No tengo C++Builder 2010 pero no creo que sea muy distinto a instalarlo en Berlin.
He visto algún problema a la hora de compilar en Berlin:
1. Un Aviso por el uno de StrPLCopy que es obsoleta
2. Problema de Unicode con TNotifyIconData
3. Problema al esconder el icono de la Barra de tareas.
Todos los problemas están solucionados en la actualización TSysTrayIcon 4 para C++Builder que publico hoy aquí
La forma de instalar el componente es similar a otras veces:
Menu->Component->Install Component Se escoge el archivo SysTrayIcon.cpp y elegir un Package Name
Saludos.
#29
Posted 09 April 2020 - 01:20 PM
Aprovecho para adaptar el componente para delphi Berlin. Para los que usen delphi y Builder, quizás sea más interesante instalas la versión delphi, que podrá usarse en Builder C++ sin problemas, así se evita la duplicidad del componente, cosa no permitida.
La versión delphi podéis encontrarla aquí.
Saludos.