Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   TrayIcon y PopupMenu (https://www.clubdelphi.com/foros/showthread.php?t=58542)

gluglu 23-07-2008 15:53:29

TrayIcon y PopupMenu
 
Hola compañer@s !

Aunque ya tuve mis dudas entonces, logré solucionar en su momento la problemática que tenía.

Ahora finalmente cambié la aplicación de VCL.Net a Win32 (con Delphi 2007) y hay cosas que me han dejado de funcionar tal y como me gustaría que funcionasen.

Mi problema es el siguiente :

Creo una aplicación directamente minimizada con TTrayIcon. Para ello en el Source del proyecto tengo puesto :
Código Delphi [-]
program MiForm;
 
uses
  OneInstance in 'OneInstance.pas',
  Forms,
  Windows,
  Messages,
  MiForm in 'MiForm.pas' {MiForm},

{$R *.res}
 
var
  Handle : THandle;
 
begin

  Handle := CreateMutex(nil, true, 'E1BFB967-E3EB-47EB-977E-780CE7BB4723');
  if GetLastError = ERROR_ALREADY_EXISTS then begin
     PostMessage(HWND_BROADCAST, messID, 0, 0);
     Exit;
  end;

  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := 'Mi Nombre';
  Application.CreateForm(TMiForm, MiForm);
  Application.ShowMainForm := False;
  Application.Run;
  if Handle <> 0 then CloseHandle(Handle);
end.

En el evento OnDblClick del TrayIcon tengo :
Código Delphi [-]
procedure TMiForm.TrayIcon1DblClick(Sender: TObject);
begin
  Application.ShowMainForm := True;
  Application.Restore;
  SetForegroundWindow(Self.Handle);
  MiForm.Show;
  MiForm.Visible := True;
end;

pero también tengo un Popupmenu para el TrayIcon.

Resulta que si hago Doble Click en el icono del TrayIcon, la ventana se abre correctamente, se restaura, aparece un botón en la barra de tareas y todo perfecto.

Ahora bien, si abro el PopupMenu y elijo la opción para abrir mi ventana, que a su vez es una mera llamada a la función TrayIcon1DblClick (PopupMenu1Opcion1.OnClick := TrayIcon1DblClick) , entonces en vez de abrirme y restaurarme la venta en su tamaño normal y original, lo que hace es me deja unicamente el botón en la barra de tareas, y tengo yo expresamente pulsar el botón aparecido en la barra de tareas para que me restaure de nuevo la ventana.

Qué estoy haciendo mal ? En VCL.Net me funcionaba correctamente, pero al parecer ahora en Win32 algo ha cambiado.

Gracias por vuestros consejos ;)

Khronos 24-07-2008 00:19:43

Si fuera tu, utilizaria el componente TJvTrayIcon de el pack de componentes Jedi, que es mucho mejor, los podrás encontrar en SourceForge.

El TJvTrayIcon tiene tiene una propiedad para empezar oculta junto al reloj, asi te ahorras codigo.

Salu2


La franja horaria es GMT +2. Ahora son las 14:42:38.

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