Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-07-2008
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Problema al minimizar

Hola a todos...

Desde hace un tiempo me encargo de una aplicación que se minimiza al lado del reloj.
Usa un TApplicationEvents con sus eventos minimize y restore para minimizar y restaurar el mainform y un TTrayIcon para controlar el click y restaurar.

Todo funciona mas o menos bien hasta que, teniendo la ventana en pantalla, pulsamos windows+D o Windows+M.

Con windows+D la aplicacion se minimiza y se me queda la tarea en la barra de tareas y por mucho que hagas click sobre ella, no se restaura. Hay que pulsar botón derecho y cerrar para que desaparezca.

Con Windows+M la aplicación no hace nada, no se minimiza ni se oculta ni nada.

En el WMSysCommand tengo esto:
Código Delphi [-]
procedure TfPrinc.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType = SC_MINIMIZE) or (Msg.CmdType = SC_CLOSE) then
  begin
    Application.Minimize;
    fPrinc.hide;
  end
  else if (Msg.CmdType = SC_RESTORE) then
  begin
    Application.MainForm.Hide;
    Application.MainForm.Show;
    application.BringToFront;
    Application.Restore;
  end;
end;

En el TrayiconClick tengo esto:

Código Delphi [-]
procedure TfPrinc.TrayIconClick(Sender: TObject);
begin
  application.restore;
  fPrinc.show;
  application.BringToFront;
end;

Y tengo esto en los AppEvents:
Código Delphi [-]
procedure TfPrinc.AppEventsMinimize(Sender: TObject);
begin
  Application.Minimize;
  fPrinc.hide;
end;

procedure TfPrinc.AppEventsRestore(Sender: TObject);
begin
  application.restore;
  fPrinc.show;
  application.BringToFront;
end;

Se os ocurre algo por lo que no me responda bien a esas combinaciones de teclas?

Muchas gracias.
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
  #2  
Antiguo 30-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, creo que es debido a que en el restores llamas al Hide, por lo que entonces vuelves a enviar un mensaje SC_CLOSE y luego posteriormente, con el show, otro mensaje SC_RESTORE. Vamos, que se te queda bloqueado el funcionamiento recursivamente. Prueba de poner, en vez de

Código Delphi [-]
else if (Msg.CmdType = SC_RESTORE) then
  begin
    Application.MainForm.Hide;
    Application.MainForm.Show;
    application.BringToFront;
    Application.Restore;
  end

tansolo

Código Delphi [-]
else DefaultHandler(Msg);

y vigilar en Appeventsrestore , minimize, si realmente son necesarias. Saludos.
Responder Con Cita
  #3  
Antiguo 26-01-2012
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Gracias

Muchas gracias..

Mas vale tarde que nunca, no?
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
minimizar formularios federiconqn21 Varios 7 29-04-2006 01:16:39
al minimizar pablo OOP 1 24-03-2005 04:42:02
Minimizar.... craven Varios 3 17-09-2003 18:36:26
Minimizar aplicación fmatias Varios 2 24-07-2003 09:51:00
Minimizar superhopi OOP 2 18-06-2003 05:10:42


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


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
Copyright 1996-2007 Club Delphi