PDA

Ver la Versión Completa : Refrescar Bandeja del sistema...! quitar icono.


Gelmin
02-05-2004, 22:29:17
Hola a todos aqui estoy de nuevo, me consegui por ahi una componente try icon y la utilice en un programita que tengo, pero lo que no me gusta es que cuando cierro mi aplicacion el icono sigue presente en la bandeja del sistema hasta que paso el mouse sobre el entonces se quita pero si no le paso el mouse sobre y vuelvo a ejecutar una y otra vez mi app entoces los iconos van quedando en la bandeja y no se quitan hasta que paso el mouse sobre ellos, me parece a mi que es algo asi como que el icono se quita cuando se refresca la bandeja del sistema quisiera saver como puedo hacer para que cuando mi programita termine pues refresque la bandeja del sistema o que se acuerde de quitar el tryicon que ha puesto en la bandeja, busque en el componente tryicon si habia alguna propiedad para ese proposito pero no encontre nada...un saludo Gelmin Martinez(Nicaragua) :(

roman
02-05-2004, 22:38:42
pero lo que no me gusta es que cuando cierro mi aplicacion el icono sigue presente en la bandeja del sistema hasta que paso el mouse sobre el entonces se quita pero si no le paso el mouse sobre y vuelvo a ejecutar una y otra vez mi app entoces los iconos van quedando en la bandeja y no se quitan hasta que paso el mouse sobre ellos(


Dime qué componentes bajas y te diré quién eres


:D

Ya en serio, un icono de la bandeja se quita mandando el mensaje NIM_DELETE con la función Shell_NotifyIcon. Una de dos, o la componente que bajaste no se ocupa de esto o no la estás desactivando (si es que la componente tiene la posibiliada de hacerlo).

Te recomiendo que use TRXTrayIcon de la librería RX que puedes bajar de la página del amigo cadetill (http://www.clubdelphi.com/users/cadetill).

La componente tiene una propiedad Active para insertar o quitar el icono aunque supongo que no es necesario poner Active := false ya que cualquier componente de este tipo que se precie de ser buena tendrá que remover el icono en su destructor.

// Saludos

Gelmin
02-05-2004, 23:10:26
La componente que baje se llama TCoolTryIcon, ya tengo la libreria Rx, pero la acabo de conseguir hace poquito cuando hice esa aplicacion lo que tenia era ese cooltryicon pero vamos al grano...cual es la sintaxis de ese mensaje que ahorita lo quize implementar y no lo consegui talves me envias el ejemplo de como es el asunto...de acuerdo...un saludo Gelmin Martinez(Nicaragua) :cool:

roman
02-05-2004, 23:18:57
El problema es que el mensaje debe mandarse junto con una estructura TNotifyIconData:

Shell_NotifyIcon(NIM_DELETE, @Data)

pero dicha estructura es la que se usa también para insertar el icono y debe coincidir. Dicho de otra forma, deberás tener acceso a la estructura de este tipo que use la componente que mencionas.

De cualquier forma te aviso que debes incluir la unidad ShellApi para acceder a la función Shell_NotifyIcon así como a la declaración del tipo de datos.

// Saludos

pd: ¿Si ya tienes las RX por qué no sustituyes la componente anterior por TRXTrayIcon?

Gelmin
02-05-2004, 23:45:16
No he revisado muy bien la componente try que trae la Rx pero lo que me gusta de esta componente Cooltryicon es que trae una funcion para mostrar un mensaje tipo hint pero personalizado con icon y titulo que dilata unos cuantos segundos en esta componente la funcion se llama ShowBalloonHint no se si la tryicon de la rx la tendra si la tiene la sustituyo aunque ya habia programado todo y solo me faltaba ese detalle...Gelmin Martinez(Nicargua) :p

roman
03-05-2004, 00:02:51
ShowBalloonHint [...] si la tiene la sustituyo

Pues no, creo que no pero buscando en internet me encontré una CoolTrayIcon en

http://www.delphi32.com/vcl/5086/

No sé si sea la misma que tienes tú pero la componente se ve bien, tiene lo de los Baloon Hints y a juzgar por el demo que trae funciona bien y sin el problema que indicas. Si no es la misma que tienes entonces quizá te interese cambiarla por ésta.

// Saludos

Gelmin
03-05-2004, 00:25:14
Si asi es esa es la componente con la que estoy trabajando y en verdad en los demos que trae no sucede este problema debe ser entonces que hay alguna propiedad que debe solucionar este problema pero no la he encontrado y estube buscando en los demos y nada que encuentro donde es que el quita el icono del task bar seguire buscando a ver si encuentro algo...men gracias Gelmin Martinez (Nicaragua).

roman
03-05-2004, 01:44:36
Pues, ¿de qué manera los estás usando? Acabo de instalarlo, puse uno en un formulario con su propiedad IconVisible = true y listo, me muestra el icono. Y veo que se comporta correctamente; aún sin poner IconVisible en false, cierro la aplicación y el icono desaparece.

// Saludos

Gelmin
04-05-2004, 16:48:39
Estube probando los demos que trae el Cooltryicon y funcionan correctamente lugo lo probe yo asi como lo hicistes tu y funciona correctamente, creo que lo que sucede es que el icono se queda ahi cuando ejecuto la aplicacion bajo el IDE de Delphi y luego la cierro desde el Run/program reset parece que ella no se da ni cuenta a que hora delphi la cierra y es por eso que el icono no se quita porque cuando cierro la aplicacion desde su ventana principal ahi si se quita el icono normalmente, entonces creo que talves eso sea normal si cierro la aplicacion desde Delphi y no desde y no desde la ventana principal de la app. y ahora te preguntaras porque tengo que cerrar mi aplicacion con run/program reset del Delphi normalmente esto se hace cuando la app se pega o envia un error lo que sucede es que mi aplicacion se cerrara automaticamente en un tiempo determinado o cuando el usuario cierre sesion en Win y es por eso que cuando estoy depurandola para probar algunas cosas no espero hasta que el tiempo programado termine la aplicacion si no que la termino forsadamente con el IDE del Delphi ok....un saludo Gelmin Martinez (Nicaragua) :D

roman
04-05-2004, 16:51:50
Pues entonces todo está aclarado. Desde luego que Reset impedirá, entre otras cosas, que se libere el icono.

// Saludos