Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ventana emergente residente (https://www.clubdelphi.com/foros/showthread.php?t=90338)

mblascog 23-05-2016 23:03:16

Algo relacionado con el tema. Sabe alguien si hay manera de forzar que el icono aparezca fijo al lado del reloj y no oculto, de manera que se tenga que pulsar la tecla para visualizarlo?

Gracias.

mblascog 24-05-2016 09:07:24

Me contesto yo misma, no sé si existe alguna forma desde Delphi, pero he visto que se puede personalizar la lista de iconos ocultos. Pues aquí le indico al programa que muestre el icono y las notiificaciones así aparece fijo.

rocksoft 24-05-2016 19:10:35

Hola mblascog,

usa el componene TTrayIcon
http://docwiki.embarcadero.com/CodeE...yIcon_(Delphi)

Tambien si tienes Jedi instalado tiene uno

mblascog 24-05-2016 19:58:06

Gracias rocksoft. Finalmente he usado el trayicon de las Jedi. Va fantástico.
Mi intención es que el programa que estoy desarrollando inicie con las Windows, hasta ahí ningún problema, pero me gustaría que se iniciara en segundo plano, es decir, que apareciera el icono a la barra de tareas y caso de querer acceder al problema, fuese con dobleclick.
Y la verdad, no sé como empezar. Tienes alguna idea?

Gracias

rocksoft 24-05-2016 21:58:34

Buenas,

disparando a ciegas, inicia la aplicacion minimizandola, creo que existe una propiedad del trayicon que permite las dos opciones, esconder y poner en la barra.

mblascog 24-05-2016 22:23:34

Gracias rocksoft, he estado buscando y no soy capaz de encontrar la opción que minimizar o esconder. Corrijo, existe la propiedad HideApplication, pero da error: Cannot change Visible in OnShow or OnHide

rocksoft 25-05-2016 04:09:29

Hola,

con

Código Delphi [-]
procedure Tu_Form.FormShow(Sender: TObject);
begin
self.WindowState:=wsMinimized;
end;


lo minimizas

mblascog 25-05-2016 08:26:55

Rocksoft, esto minimiza la aplicación, y yo la quisiera al systray, y yo quisiera sólo el icono al lado del reloj.
Gracias

mblascog 25-05-2016 09:01:49

És más, por las dudas, lo acabo de probar y con el tryicon se hace un lío. El programa se minimiza, cosa que no quiero, pero al maximizar. Intento maximizar y aparece una pequeña pantalla a la parte inferior izquierda de la pantalla, con los botones de restaurar, maximizar o cerrar. Restauro para abrir de nuevo el programa, se ve un momento y desaparece. En el systray aparece el icono.

Casimiro Notevi 25-05-2016 09:33:22

Y los ejemplos de escafandra y ecfisa, qué tal.

mblascog 25-05-2016 10:09:56

Casemiro, son dos cosas diferentes, colocar el icono en el systray ya lo he conseguido. Lo que busco ahora es iniciar el programa al iniciar Windows y que aparezca en segundo plano, es decir, tener que clicar el icono del systray para acceder al programa.
Iniciarlo con las Windows ningún problema, pero lo que no encuentro es la manera de iniciarlo sin que se vea, sólo el icono, tipo programa antivirus, ....
Gracias

Casimiro Notevi 25-05-2016 10:11:39

Lo que te ha indicado rocksoft

mblascog 25-05-2016 10:44:03

Lo que me ha indicado rocksoft minimiza la aplicación, que no es lo mismo que aparezca el icono en el systray. Lo que quiero es que aparezca al lado del reloz, sólo el icono, como el sonido, red, antivirus y pulsar click, dobleclick, botón derecho, .... lo que sea, para abrir el interface.

Gracias

mblascog 25-05-2016 11:58:41

He conseguido lo que buscaba siguiendo los pasos de un post de xEsk de 25 de junio de 2008. En lugar de usar las Jedi he usado las RxLib y me ha funcionado

Casimiro Notevi 25-05-2016 12:24:29

Cita:

Empezado por mblascog (Mensaje 505563)
Lo que me ha indicado rocksoft minimiza la aplicación, que no es lo mismo que aparezca el icono en el systray.

Es lo que preguntaste, minimizarla, lo del icono es distinto y eso lo controlas tú.
Cita:

Empezado por mblascog (Mensaje 505566)
He conseguido lo que buscaba siguiendo los pasos de un post de xEsk de 25 de junio de 2008. En lugar de usar las Jedi he usado las RxLib y me ha funcionado

Son las mismas, las RXlib están integradas en las Jedi.

mblascog 25-05-2016 17:41:11

Hola Casemiro, no quiero contradecirte pero el componente TRxTrayIcon no dispone de las mismas propiedades que JvTrayIcon. Quizá no lo implementé bien pero no lo conseguí.
En cuanto a lo de minimizar, quizás me he expresado mal, pero no quiero minimizar sinó ocultar, y visualizarla al pulsar sobre el icono

Gracias

Casimiro Notevi 25-05-2016 18:30:50

Cita:

Empezado por mblascog (Mensaje 505566)
He conseguido lo que buscaba ... ... he usado las RxLib y me ha funcionado

Eso es lo que te dije hace 5 días :)
Cita:

Empezado por Casimiro Notevi (Mensaje 505366)
¿Por qué no sigues usando las RXlib?


mblascog 25-05-2016 18:37:32

Llevas razón que me lo dijiste, pero cómo hago para que aparezca el mensaje emergente, el balloonhint del de las jedi?

escafandra 25-05-2016 20:27:33

Andas bastante perdido.
Todas las opciones que se te dieron sirven.

Para mis sugerencias, te dije que probaras
1.- TSysTrayIcon
2.- Ventana desplegable translúcida
3.- ShowBalloon.

En el último caso y si no usas Win8 o Win 10 (y posiblemente Win7 y Vista) úsalo así:
Código Delphi [-]
procedure ShowBalloon(Handle: THANDLE; Titulo, Texto: String);
var
  Data: TNotifyIconData;
begin
  ZeroMemory(@Data, sizeof(TNotifyIconData));
  Data.cbSize:= sizeof(TNotifyIconData);
  Data.uFlags:= NIF_ICON or NIF_INFO or NIF_REALTIME;
  Data.dwInfoFlags:= NIIF_INFO;
  lstrcpyn(Data.szInfoTitle, PCHAR(Titulo), 64-1);
  lstrcpyn(Data.szInfo, PCHAR(Texto), 256-1);
  Data.uTimeOut:= 1000;
  Data.Wnd:=  Handle;
  Shell_NotifyIcon(NIM_ADD, @Data);
  Shell_NotifyIcon(NIM_MODIFY, @Data);
  //Shell_NotifyIcon(NIM_DELETE, @Data);  // Para WinXp esta línea debe ser comentada. En el resto de S.O. también funciona con la línea comentada
end;

Saludos.

mblascog 26-05-2016 10:25:04

escafandra, perdida es poco. El último programa que escribí en Delphi hace muchos años, no sé 10, 15, y la verdad, a pesar de recordar mucho, me cuesta.
Suerte tengo de la ayuda de este foro, y la verdad, lo estoy pasando pipa.
Finalmente lo he conseguido siguiendo tus indicaciones, muchísimas gracias.
Pero me faltaría una cosa, interesa que no se pueda cerrar el programa, sinó esconderlo. Pensaba que sería fácil, en el onclose del formulario principal, pensaba en action := caHide, pero no funciona.
He buscado por el foro, y he encontrado esta explicación de Lepe, del año 2005, pero no la entiendo, no sé que és lo que tengo que hacer.
Para salir del paso, y la verdad me está bien, he eliminado los botones del form, y en la opción Salir del menú, he puesto Hide y funciona

De nuevo muchas gracias

Cita:

procedure TCustomForm.Close;
var
CloseAction: TCloseAction;
begin
if fsModal in FFormState then
ModalResult := mrCancel
else
if CloseQuery then
begin
if FormStyle = fsMDIChild then
if biMinimize in BorderIcons then
CloseAction := caMinimize else
CloseAction := caNone
else
CloseAction := caHide;
DoClose(CloseAction);

// Estas 2 comprobaciones son las que hace terminar la aplicación
// y por eso solo funciona con caNone, con los demás se cierra.
if CloseAction <> caNone then
if Application.MainForm = Self then Application.Terminate

else if CloseAction = caHide then Hide
else if CloseAction = caMinimize then WindowState := wsMinimized
else Release;
end;
end;


La franja horaria es GMT +2. Ahora son las 18:33:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi