PDA

Ver la Versión Completa : Balloon de texto


aeff
18-10-2006, 15:19:02
Hola a todos los exploradores del foro del ClubDelphi, necesito saber si alguien me puede ayudar a hacer lo siguiente:

-> Mostrar un ballon de texto de los que salen desde un ícono del SystemTray, ya sea como advertencia, error o información.(en Delphi 5)

Nota: en C++Builder 6 lo puedo hacer fácil porque el registro "TNotifyIconData" tiene más campos que en Delphi 5, es posible que sea porque la API Shell_NotifyIcon no tenia esa función incorporada cuando salió Delphi 5, de todos modos,

gracias de antemano...

jachguate
18-10-2006, 17:41:35
Si conoces las llamadas al API para hacer esto, podes crear vos mismo una unidad que las realice y utilizar esta para tu propósito, aún en delphi 3.

Hasta luego.

;)

aeff
18-10-2006, 20:48:29
Amigo(s), el problema no es hacer una unidad para que realice esta función, la puedo hacer pero no con la calidad de la original, el problema es que necesito que sea la función Shell_NotifyIcon, de Windows, la que muestre este balloon de texto, en C++Builder 6 la estructura TNotifyIconData tiene los siguientes parámetros:

DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
CHAR szTip[64];
CHAR szTip[128];
DWORD dwState;
DWORD dwStateMask;
CHAR szInfo[256];
UINT uTimeout;
UINT uVersion;
CHAR szInfoTitle[64];
DWORD dwInfoFlags;
GUID guidItem;

pero en Delphi 5 solo se han declarado los siguientes:

cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of AnsiChar;

es decir, en Delphi 5 faltan parámetros en esta estructura, TNotifyIconData, y precisamente los que faltan son los que le indican a la función Shell_NotifyIconData las descripciones del balloon de texto.

por lo que necesito que alguien me ayude a hacer esto en Delphi 5, una vez lo intenté pero no me dió resultado.

Gracias nuevamente de antemano...

jachguate
18-10-2006, 22:13:15
Quizas no me supe explicar bien. NO me refería a que hagas una notificación similar a la del ballon, construyendo una ventana y todo eso... a lo que me refiería es a que podes hacer vos una unidad que haga las declaraciones necesarias, que tal una TaeffNotifyIconData y que en esa unidad también importes las rutinas que haga falta del API para realizar la llamada usando tu estructura y no la original de delphi.

¿me explico ahora?

Hasta luego.

;)

seoane
18-10-2006, 22:41:52
Para empezar aquí te dejo como declarar la estructura TNotifyIconData:

type

TNOTIFYICONDATA = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..127] of AnsiChar;
dwState: DWORD;
dwStateMask: DWORD;
szInfo: array [0..255] of AnsiChar;
uTimeout: UINT;
szInfoTitle: array [0..63] of AnsiChar;
dwInfoFlags: DWORD;
end;


Las funciones son las mismas, al usar la nueva estructura y asignar el campo cbSize correctamente windows ya se da por enterado de que quieres usar los nuevos balones. Creo que ya no te hace falta nada mas, puede que alguna de estas constantes:


const
NIF_INFO = $00000010;
NIIF_NONE = $00000000;
NIIF_INFO = $00000001;
NIIF_WARNING = $00000002;
NIIF_ERROR = $00000003;

Zeta
18-10-2006, 23:02:32
Podrías probar con la suite de componentes JediVCL, que en la paleta NonVisual tiene un componente que se llama "JvBalloonHint" y es el tipo de ballonHint que buscas y se puede utilizar cambiando la propiedad "UseBallonAsApplicationHint" a true, y lo demás creo que lo sabes manejar bien.

Podrías bajarte el exe (el Mega Demo) con los ejemplos y allí podrás ver todo lo que JediVCL te ofrece
http://sourceforge.net/project/showfiles.php?group_id=45786


Saludos

aeff
18-10-2006, 23:55:41
Oye mister!!! muuuuuuuuuchaaaaaaaaaaaas gracias por haberme ayudado con este problema, te agradezco a ti a todos los que han colaborado para darme una respuesta.

su compañero del ClubDelphi, AEFF...

JXJ
19-10-2006, 00:52:08
El JvBalloonHint '¿Funciona, solamente, en los Windows XP o tambien
en windows 98, 95?


recuerdo lei que solo funciona en windows xp
o en windows NT, windows 2000
por que en esos Sistemas operativos, se implemento.
el mecanismo de mostrar el globito. balloon

vale gracias

aeff
19-10-2006, 01:03:10
Ok mister!!! gracias por la aclaración, solo tengo que calcular si el programa se está ejecutando sobre el subsistema Win32,

Hasta luego, aeff!!!

Zeta
19-10-2006, 21:17:51
En win98 funciona OK.
Me imagino que en win95 también, pero yo recomendaría por muchas cosas (seguridad) pasarse a un SO más nuevo, aunque es relativo.

Ahh, si querías el TrayIcon, en la misma paleta está el JvTrayIcon, que es lo que creo que también necesitabas.


Saludos

aeff
20-10-2006, 02:26:38
gracias por todo, de todas maneras ya resolví el problema...