PDA

Ver la Versión Completa : Mostrar Balloon en TrayIcon


aguml
25-10-2014, 23:24:39
Hola amigos, lo que pretendo es que la aplicacion se oculte y aparezca un TrayIcon en la barra de tareas y al aparecer la TrayIcon muestre un Balloon y es ahi donde no doy con el modo de conseguirlo. ¿alguien me puede ayudar en eso?
Buscando por la red he visto que hacen esto en C++Builder:
//TrayIcon->BalloonTitle = "Trabajando...";
//TrayIcon->BalloonHint = "La aplicación está realizando la operacion solicitada. Espera a que termine";
//TrayIcon1->BalloonFlags = bfInfo;
No se en que version lo harán porque en C++Builder no existen esas propiedades. ¿como puedo hacerlo en C++Builder 6?

escafandra
26-10-2014, 00:36:48
Prueba este componente: SysTrayIcon (http://www.delphiaccess.com/forum/componentes-12/systrayicon/msg13138/#msg13138) trabaja con mensajes tipo Balloon, iconos animados en el systray, permite esconder de la barra de tareas nuestra app y reastaurarla.


Saludos.

aguml
26-10-2014, 01:02:47
gracias amigos, es genial que alguien que haya pensado en ello y lo haya solucionado lo comparta. Mañana lo pruebo y cuento que tal me fue.

aguml
26-10-2014, 10:45:57
Amigo ¿como instalo el componente que indicas? he visto el demo y es justo lo que quiero pero no se como instalar el componente en la barra de tareas.

escafandra
26-10-2014, 12:00:39
En el hilo que abrí para publicar el componente, indico como instalarlo desde el mismo Builder (http://www.delphiaccess.com/forum/componentes-12/systrayicon/msg26341/#msg26341), mediante el menú Component > Install Component. En el nombre de la unit pones la ruta completa del archivo SysTrayIcon.cpp.

Saludos.

aguml
26-10-2014, 14:31:32
Una cosa amigo, ¿tengo que guardar los archivos del componente en algun sitio permanentemente? ¿o una vez instalado no necesito esos archivos?
Otra cosa ¿donde se instala? lo he instalado y no lo encuentro por ningun sitio :-/

aguml
26-10-2014, 15:03:39
Vale amigo, ya lo he instalado y he hecho la prueba que queria hacer:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SysTrayIcon1->Minimize();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SysTrayIcon1Minimize(TObject *Sender)
{
Form1->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SysTrayIcon1Click(TObject *Sender)
{
SysTrayIcon1->Restore();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SysTrayIcon1Restore(TObject *Sender)
{
Form1->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormHide(TObject *Sender)
{
SysTrayIcon1->ShowBalloon("Titulo","Texto");
}
//---------------------------------------------------------------------------

Si lo pruebas veras que va genial la primera vez pero una vez haces clic en el TrayIcon y vuelves a probar ves que no se oculta la pestaña del proceso en la barra de tareas pero si aparece el bocadillo. ¿que puede estar pasando?

aguml
26-10-2014, 16:58:15
Solucionado, he visto bien como lo hacias tu en el demo y lo he puesto igual y va joya.
Otra cosa amigo, ¿de donde sacastes los iconos para la animación? ¿tiene que ser de algun tipo especifico (.bmp, .ico, .gif...)?

escafandra
27-10-2014, 00:19:24
Veo que te has ido respondiendo las preguntas. Para aclararte lo de los iconos lee esto (http://www.delphiaccess.com/forum/componentes-12/systrayicon/msg27920/#msg27920) y experimenta.


Saludos.

aguml
09-04-2020, 02:09:11
Sé que este post es bastante antiguo pero no veo otro sitio mejor para preguntar.
Escafandra he estado mucho tiempo sin pc y a los años tengo uno y estoy intentando desempolvar proyectos y ahora tengo instalado Embarcadero 2010 y no veo la manera de instalar tu componente en el c++ builder. He probado todo lo que se me ocurrió y no sé cómo hacerlo ¿Podrías ayudarme? Gracias.

escafandra
09-04-2020, 18:11:54
No 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

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


Para más información y descarga puedes visitar el hilo original del componente aquí (http://delphiaccess.com/foros/index.php/topic/1062-systrayicon/?p=103637).




Saludos.

escafandra
09-04-2020, 21:36:12
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.


Saludos.

aguml
11-04-2020, 17:10:14
Muchas gracias. Luego lo intento a ver qué tal me va y te digo.

aguml
11-04-2020, 19:06:24
Amigo lo he intentado instalar pero se ve que algo ha cambiado en el modo de instalarlo. Voy a Component y me aparecen las opciones ”New VCL Component", "Create Component Template" (desactivado), "Install Packages", "Import Component", y "Import WSDL".
En "Install Packages" aparece una lista de componentes para instalar.
En "Import Component" tengo 3 opciones: Impirt a type library, Import ActiveX Control, Import .Net Assembly. Si lo intento por aquí me da error porque busca un dll o ocx.
Y en "Import WSDL" tampoco he podido.

escafandra
12-04-2020, 00:36:54
Tanto en BCB5, como BCB6 como Berlin, aparece la opción Install Component. Lo mismo ocurre en las distintas opciones de delphi que tengo. En tu versión ya no que que decirte pero no es lógico que en una versión intermedia desaparezca. Intenta a ver si lo han puesto en New Component y te dan la opción de usar un fuente ya escrito (SysTrayIcon.cpp). Otra sería compilarlo en Berlin y exportar el package a tu versión pero no se si la aceptará, me temo que no.


Saludos.

aguml
13-04-2020, 15:33:44
Lo he intentado desde Install component pero como dije sale una lista con los diferentes tipos de componentes y tienes que dar en alguno y en mi caso he elegido uno de tipo TComponent, una vez hago eso doy a siguiente y me sale una ventana donde elijo Class Name, Palette Page, Unit Name, y Search Path. Yo he puesto como nombre TSysTrayIcon, como paleta he elegido MIOS, como Unit Name le doy a los 3 puntos y elijo el .cpp de tu componente, y en Search Path no pongo nada y me crea un archivo .cpp con esto:
//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "SysTrayIcon.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//

static inline void ValidCtrCheck(TSysTrayIcon *)
{
new TSysTrayIcon(NULL);
}
//---------------------------------------------------------------------------
__fastcall TSysTrayIcon::TSysTrayIcon(TComponent* Owner)
: TComponent(Owner)
{
}
//---------------------------------------------------------------------------
namespace Systrayicon
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TSysTrayIcon)};
RegisterComponents(L"MIOS", classes, 0);
}
}
//---------------------------------------------------------------------------

Y ahí ya me paro porque no creo que vaya bien y porque no se que mas hacer :(
No aparece la paleta MIOS ni nada.

escafandra
13-04-2020, 18:56:41
Esa opción es el wizard para crear un componente desde cero. A las malas lo puedes hacer y copiar el código del componente en ese nuevo... pero no me puedo creer que no tengas la opción de instalar componente. todas las versiones lo traen :eek:

El proyecto del Package del componente es el archivo mios.cbproj que está en la descarga, trata de abrirlo a ver si es compatible con tu versión BCB



Saludos.