Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Evento segun maximizacion de form (https://www.clubdelphi.com/foros/showthread.php?t=90711)

dardusso23 17-08-2016 14:58:10

Evento segun maximizacion de form
 
Hola, Queria saber si se puede y como hacer que un componente se vea si esta el form maximizado y se oculte si no lo esta. Es posible?
Gracias

roman 17-08-2016 17:29:56

Intercepta el mensaje WM_SYSCOMMAND:

Código Delphi [-]
interface

type
  TForm1 = class(TForm)
  private
    procedure WMSysCommand(var Msg: TWMSysCommand);
  end;

implementation

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType and $FFF0 = SC_MAXIMIZE) then
  begin
    // Mostrar componente
  end
  else if (Msg.CmdType and $FFF0 = SC_RESTORE)
  begin
    // Ocultar componente
  end;

  inherited;
end;

LineComment Saludos

ecfisa 17-08-2016 22:10:40

Otra opción es capturar el mensaje WM_SIZE:
Código Delphi [-]

type
  TForm1 = class(TForm)
    tuComponente : TPanel; // por Ej.
  private
    procedure WMSize(var Msg: TMessage); message WM_SIZE;
  ...

implementation

procedure TForm1.WMSize(var Msg: TMessage);
begin
  tuComponente.Visible := Msg.WParam = SIZE_MAXIMIZED;
  DefaultHandler(Msg);
end;

Saludos :)

roman 17-08-2016 23:10:58

Hola ecfisa,

¿Por qué DefaultHandler y no inherited?

LineComment Saludos

dec 17-08-2016 23:24:51

¡Hola!

Cita:

Empezado por roman (Mensaje 507840)
Hola ecfisa,

¿Por qué DefaultHandler y no inherited?

LineComment Saludos

Buena observación Román...

ecfisa 18-08-2016 04:17:08

Hola.

Se me han trastocado las ideas mientras escribía :o. Como bién apuntan, en este caso es innecesario usar DefaultHandler simplemente hay que usar inherited.

Saludos :)

dec 18-08-2016 13:06:34

Hola,

Cita:

Empezado por ecfisa (Mensaje 507853)
Hola.

Se me han trastocado las ideas mientras escribía :o. Como bién apuntan, en este caso es innecesario usar DefaultHandler simplemente hay que usar inherited.

Saludos :)

Bueno, eso lo sabe Román que es el master aquí: por mi parto todo va bien si funciona. :D :D

dardusso23 18-08-2016 13:35:48

Buenisimo. Gracias a todos por la ayuda

Neftali [Germán.Estévez] 22-08-2016 10:39:57

Seguramente con el componente estandard de Delphi TApplicationEvents, también se pueda capturar ese mensaje.

roman 22-08-2016 18:27:20

Cosa rara. En Delphi7, el componente tiene eventos OnMinimize y OnRestore, pero no OnMaximize :eek:

LineComment Saludos

Neftali [Germán.Estévez] 22-08-2016 20:50:58

Cita:

Empezado por roman (Mensaje 507996)
Cosa rara. En Delphi7, el componente tiene eventos OnMinimize y OnRestore, pero no OnMaximize

Cierto, ya me había fijado hace tiempo.
Yo pensaba en el que captura los mensajes.


La franja horaria es GMT +2. Ahora son las 21:31:54.

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