Ver Mensaje Individual
  #1  
Antiguo 23-07-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 21
gluglu Va por buen camino
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
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 23-07-2008 a las 15:55:45.
Responder Con Cita