Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TTrayIcon como usarlo ? (https://www.clubdelphi.com/foros/showthread.php?t=57630)

Cecilio 23-06-2008 15:00:34

TTrayIcon como usarlo ?
 
Hola.

Estoy con el TtrayIcon y no consigo que funciones. Por desconocimiento.

Me gustaría saber como hacer que la aplicación se vaya a la bandeja de tareas al:
- Arrancar aplicación. (opcional).
- Al minimizar.
Y restaurar con una opción del PopupMenu.

Esto es lo más urgente.

¿ alguien tiene algún ejemplo ? o me pude decir las pautas a seguir ?

Saludos.

felipe88 23-06-2008 15:16:13

Bueno, el TryIcon es una mezcla de iconos que funcionan como lo haria un gif. En este documento (http://www.terawiki.clubdelphi.com/a..._al_limite.zip), hay un truco para minimizar tu aplicacion en la bandeja, espero te sirva...

Saludos

xEsk 23-06-2008 15:18:04

Hola, no tiene ningun secreto :)

Pones un TTrayIcon, para mostrarlo y ocultarlo "TrayIcon1.Visible:=True;" o "TrayIcon1.Visible:=False;"

Le asignas un TPopupMenu al TTrayIcon, y listo.

Si quieres capturar los eventos, minimizar y todo esto, pues tienes el TApplicationEvents.

Saludos.

Cecilio 23-06-2008 17:54:30

La importancia del foro.

Fijaros que con estas dos respuestas, he logrado hacer lo que pretendía.

homenaje al foro, en los créditos pondré un homenaje al foro.

Gracias a los dos.

felipe88 23-06-2008 18:03:14

Que bueno que encontraste la solucion...
Con gusto ;)

esocrates 24-06-2008 03:40:34

Cita:

Empezado por xEsk (Mensaje 295424)
Hola, no tiene ningun secreto :)

Pones un TTrayIcon, para mostrarlo y ocultarlo "TrayIcon1.Visible:=True;" o "TrayIcon1.Visible:=False;"

Le asignas un TPopupMenu al TTrayIcon, y listo.

Si quieres capturar los eventos, minimizar y todo esto, pues tienes el TApplicationEvents.

Saludos.

Hola xEsk:
¿Podrías explicarlo con un ejemplo?
No logro resultado con esta indicación.
Muchas gracias
Saludos

xEsk 25-06-2008 13:54:00

Cita:

Empezado por esocrates (Mensaje 295667)
Hola xEsk:
¿Podrías explicarlo con un ejemplo?
No logro resultado con esta indicación.
Muchas gracias
Saludos

Faltaría mas!

Pon estos tres componentes: TTrayIcon, TPopupMenu y un TApplicationEvents.

Crea una nueva opción al TPopupMenu para poder programar la opción de "Restaurar".

Ahora asígnale este TPopupMenu al TTrayIcon.

El código a programar sería algo así:

Código Delphi [-]
// Al minimizar la aplicación (el evento OnMinimize del TApplicationEvents)
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  // ocultamos la ventana actual (la que tiene el TTrayIcon)
  Hide;
  // mostramos el TrayIcon
  TrayIcon1.Visible:=True;
end;

// Al seleccionar la opción restaurar del TPopupMenu (en mi caso se llama Mostrarformulario1)
procedure TForm1.Mostrarformulario1Click(Sender: TObject);
begin
  // volvemos a poner visible la ventana del TTrayIcon
  Show;
  // le decimos a la ventana que se ponga como "normal"
  WindowState:=wsNormal;
  // ocultamos el TrayIcon que ya no es necesario
  TrayIcon1.Visible:=False;
end;

Como ves, realmente no tenia ningún secreto! Espero que ahora si te funcione.

Saludos.

esocrates 25-06-2008 16:44:19

Cita:

Empezado por xEsk (Mensaje 295985)
Faltaría mas!

Pon estos tres componentes: TTrayIcon, TPopupMenu y un TApplicationEvents.

Crea una nueva opción al TPopupMenu para poder programar la opción de "Restaurar".

Ahora asígnale este TPopupMenu al TTrayIcon.

El código a programar sería algo así:

Código Delphi [-]
// Al minimizar la aplicación (el evento OnMinimize del TApplicationEvents)
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  // ocultamos la ventana actual (la que tiene el TTrayIcon)
  Hide;
  // mostramos el TrayIcon
  TrayIcon1.Visible:=True;
end;

// Al seleccionar la opción restaurar del TPopupMenu (en mi caso se llama Mostrarformulario1)
procedure TForm1.Mostrarformulario1Click(Sender: TObject);
begin
  // volvemos a poner visible la ventana del TTrayIcon
  Show;
  // le decimos a la ventana que se ponga como "normal"
  WindowState:=wsNormal;
  // ocultamos el TrayIcon que ya no es necesario
  TrayIcon1.Visible:=False;
end;

Como ves, realmente no tenia ningún secreto! Espero que ahora si te funcione.

Saludos.

Muchas gracias xEsk.
Funcionó con la única corrección de cambiar la propiedad visible del TrayIcon1 por Active
Un saludo y hasta pronto

FGarcia 26-06-2008 00:48:50

Jejeje y en que pestaña esta el TrayIcon? NO lo encuentro!

esocrates 26-06-2008 00:55:37

Cita:

Empezado por FGarcia (Mensaje 296243)
Jejeje y en que pestaña esta el TrayIcon? NO lo encuentro!

Está en las RXLib tools
Un saludo

felipe88 26-06-2008 00:56:32

Cita:

Empezado por FGarcia (Mensaje 296243)
Jejeje y en que pestaña esta el TrayIcon? NO lo encuentro!

Que version de Delphi tienes...? creo que este esta de la 2006 en adelante, pero no te preocupes las rx poseen su propia version :)

FGarcia 26-06-2008 00:57:36

Joder! y yo que creia era un control de delphi! ni hablar...

Cecilio 26-06-2008 12:57:39

xEsk me ha venido de perlas el ejemplo que has puesto.la TtrayIcon y TApplicationEvents en Delphi 2007 se encuentran en el grupo "Additional"

FGarcia 26-06-2008 17:14:03

Bueno, baje e instale las Rx V2.7.7 y estoy tratando de usar el RxTrayIcon pero hay algo que no me funciona. La aplicacion la inicio minimizada (desde el IDE) y queda en la barra, si aparece el icono y funciona el menu de popup para restaurar pero no puedo volver a minimizar la aplicacion, jeje en el demo esta simple de usar pero no logro usarlo en mi aplicacion. ¿Sugerencias?

Cecilio 26-06-2008 17:34:37

Me pasa igual.
Desde que uso WindowState. Para restaurar y que se va de nuevo tengo:

Código Delphi [-]
procedure Tform1.Restaurar;
begin
     Application.mainform.visible:=true;
     TrayIcon1.Visible:=true;
     Form1.WindowState:=wsNormal;
end;

No he probado a poner no visible TrayIcon, pero creo que no es de eso.

esocrates 26-06-2008 18:02:34

Cita:

Empezado por FGarcia (Mensaje 296390)
Bueno, baje e instale las Rx V2.7.7 y estoy tratando de usar el RxTrayIcon pero hay algo que no me funciona. La aplicacion la inicio minimizada (desde el IDE) y queda en la barra, si aparece el icono y funciona el menu de popup para restaurar pero no puedo volver a minimizar la aplicacion, jeje en el demo esta simple de usar pero no logro usarlo en mi aplicacion. ¿Sugerencias?

Muestra el código que estás usando para darle un vistazo
Un saludo

esocrates 26-06-2008 18:17:53

Cita:

Empezado por Cecilio (Mensaje 296400)
Me pasa igual.
Desde que uso WindowState. Para restaurar y que se va de nuevo tengo:

Código Delphi [-]
procedure Tform1.Restaurar;
begin
     Application.mainform.visible:=true;
     TrayIcon1.Visible:=true;
     Form1.WindowState:=wsNormal;
end;

No he probado a poner no visible TrayIcon, pero creo que no es de eso.

Prueba con esto en el evento click del PopUP .
Nota:1-La propiedad visible está equivocada. La correcta es active
2-No olvides adjudicar un ícono al RXTrayicon. Lo podés hacer desde el inspector de objetos.
Código Delphi [-]
procedure TForm1.Restaurar1Click(Sender: TObject);
begin
  Show;
  WindowState:=wsNormal;
  RXTrayIcon1.Active:=False;
end;

Cecilio 26-06-2008 22:31:22

No uso las Rx, sino TtrayIcon. Este no lleva la propiedad Active sino Visible.

Saludos.

Arsenio 30-11-2011 15:43:29

Yo en el procedimiento Restaurar (que se ejecuta con el doble click en el TrayIcon o con el popupMenu) hago unos pasos más, ya que se comportaba "extraño" cuando lo restauraba, por ejemplo no me permitía minimizar otra vez la ventana si primero no hacía "foco" en la ventana:

Código Delphi [-]
procedure TFormCustom.Restaurar1Click(Sender: TObject);
begin
  RestaurarVentana;
end;

procedure TFormCustom.TrayIcon1DblClick(Sender: TObject);
begin
  RestaurarVentana;
end;

procedure TFormCustom.RestaurarVentana;
begin
  Show;
  WindowState := wsNormal;
  TrayIcon1.Visible := False;
  //estas dos lineas las agrego para que le de foco a la ventana y quede arriba.
  Application.BringToFront;
  Application.Restore;
end;


Y en vez de usar el TApplicationEvents, para no agregar una unit más, uso directamente:

Código Delphi [-]
//Asigno evento cuando minimiza la aplicación
Application.OnMinimize := MinimizarAplicacion;

procedure TFormCustom.MinimizarAplicacion(Sender: TObject);
begin
  Self.Hide;
  TrayIcon1.Visible := True;
end;

Esto es con el Delphi XE, se que los anteriores tenían algunos problemas con este componente.


La franja horaria es GMT +2. Ahora son las 21:08:42.

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