Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2005
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Minimizar Form en ShowModal

Como se puede minimizar un form que esta en ShowModal, bueno de hecho minimizar la aplicacion que esta mostrando un ventana en ShowModal.
De antemano gracias por la ayuda.
Responder Con Cita
  #2  
Antiguo 27-01-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por el_enigma1
Como se puede minimizar un form que esta en ShowModal, bueno de hecho minimizar la aplicacion que esta mostrando un ventana en ShowModal.
Añade a la parte privada de tu form modal la siguiente definición:

Código Delphi [-]
 procedure WMSyscommand(Var msg: TWmSysCommand); message WM_SYSCOMMAND;

y luego en la implementación de dicha procedure haces lo siguiente:

Código Delphi [-]
   case (msg.cmdtype and $FFF0) of
     SC_MINIMIZE:
     begin
       msg.result := 0;
       EnableWindow(Application.handle, true);
       Application.Minimize;
     end;
   else
     inherited;
   end;

con ésto debería funcionar...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 30-01-2005
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Gracias

Gracias por la info
Responder Con Cita
  #4  
Antiguo 30-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Con el método de Neftalí se logra minimizar la aplicación al minimizar la ventana modal, pero, ¿qué tal minimizarla usando el botón de la barra de tareas? Este botón siempre se inhabilita al mostrar una ventana modal.

Pues viendo esta solución se me ocurrió entonces poner

EnableWindow(Application.handle, true);

en el evento OnShow de la ventana modal y ¡listo!, ahora el botón de la barra de tareas continúa funcionando y de hecho sin necesidad del WMSysCommand.

Así que me alegro de que hayan preguntado esto y de la respuesta de Neftalí que resuelve algo que siempre quise .

La pregunta ahora sería, ¿cómo lograr esto para cualquier ventana modal sin necesidad de programar el evento OnShow de cada ventana?

¿Se te ocurre algo Neftalí?

// Saludos
Responder Con Cita
  #5  
Antiguo 30-01-2005
unko! unko! is offline
Miembro
 
Registrado: ene 2005
Posts: 123
Poder: 20
unko! Va por buen camino
intenta tambien en el Inspector de Objetos, en la parte de hasta abajo en "Windows State" modificale a -----> wsMinimized si kieres ke se minimize en cuanto se le llame. slau2, espero ke sirva XD
Responder Con Cita
  #6  
Antiguo 31-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

Continuando lo que había planteado, he finalmente encontrado una respuesta definitiva dada por Peter Below en los foros de Borland. Básicamente se trata de habilitar la aplicación cada vez que alguien la deshabilite. La aplicación recibe el mensaje WM_ENABLE cuando se habilita o se inhabilita así que lo único que hay que hacer es interceptar este mensaje. Desafortunadamente el evento OnMessage de una componente ApplicationEvents no recibe este mensaje así que hay que usar otra técnica que es la que nos muestra Peter Below:

Código Delphi [-]
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

  private
    function AppHook(var Msg: TMessage): Boolean;
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.HookMainWindow(AppHook);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.UnhookMainWindow(AppHook);
end;

function TForm1.AppHook(var Msg: TMessage): Boolean;
begin
  Result := false;
  if Msg.Msg = WM_ENABLE then
    if not TWMEnable(Msg).Enabled then
    begin
      EnableWindow(Application.Handle, true);
      Result := true;
    end;
end;

end.

// Saludos
Responder Con Cita
  #7  
Antiguo 31-01-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por roman
...así que hay que usar otra técnica que es la que nos muestra Peter Below:

Código Delphi [-]
 ...
    Application.HookMainWindow(AppHook);
 ...
Muy bueno, sí señor...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 31-01-2005 a las 11:45:21.
Responder Con Cita
  #8  
Antiguo 08-07-2005
Avatar de Alexander
Alexander Alexander is offline
Miembro
 
Registrado: may 2004
Posts: 235
Poder: 20
Alexander Va por buen camino
Post Minimizar un Report Builder

Hola amigos del Foro.

Gracias por la información para minimizar un ShowModal. Me funcionó perfecto.

Mi consulta ahora es: Como puedo hacer para que al minimizar un reporte desarrollado en Report Builder, también minimice la aplicación.

Muchas gracias.

Alexander
__________________
Cielos azules
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


La franja horaria es GMT +2. Ahora son las 08:59:58.


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