Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Impedir cambio de tamaño (https://www.clubdelphi.com/foros/showthread.php?t=94070)

Angel.Matilla 18-07-2019 12:12:27

Impedir cambio de tamaño
 
Buenas. Tengo una aplicación en la que el menú principal es este MDIForm

Me he dado cuenta que si hago doble click en el borde superior se minimiza y queda así

pero una vez ocurrido esto no es posible recuperar el tamaño original.

¿Cómo podría evitar que ese doble click sobre el borde del formulario modificara el tamaño del mismo? He probado con los diferentes estilos de borde y poniendo o quitando los botones de maximizar/minimizar, pero no logro evitarlo.

Casimiro Notevi 18-07-2019 13:55:17

Puede que en el evento "Resize" del form, cancelando para que no haga nada.

Neftali [Germán.Estévez] 18-07-2019 14:11:37

Cita:

Empezado por Angel.Matilla (Mensaje 532821)
pero una vez ocurrido esto no es posible recuperar el tamaño original.


¿Doble click en los bordes y en el título no hace nada?
¿El ALT+SPACE para acceder al menú de sistema y hacerlo por ahí, tampoco?
¿Tecla Windows y Flecha arriba/Ajajo para maximizar/minimizar tampoco?

Angel.Matilla 19-07-2019 09:52:01

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 532824)
¿Doble click en los bordes y en el título no hace nada?
¿El ALT+SPACE para acceder al menú de sistema y hacerlo por ahí, tampoco?
¿Tecla Windows y Flecha arriba/Ajajo para maximizar/minimizar tampoco?

La tercera combinación que citas no la conocía; las otras dos depende: si está puesto el botón de maximizar si lo hacen pero si el mismo falta, no.

Cita:

Empezado por Casimiro Notevi (Mensaje 532823)
Puede que en el evento "Resize" del form, cancelando para que no haga nada.

Lo tengo que probar. Gracias a los dos.

ecfisa 19-07-2019 19:19:13

Hola.

Una solución al problema que mencionas es:

.h
Código PHP:

...
private:       
  
void __fastcall WMSysCommand(TWMSysCommand &msg);
  
BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER
(WM_SYSCOMMANDTWMSysCommandWMSysCommand)
  
END_MESSAGE_MAP(TForm)
public:    
... 

.cpp
Código PHP:

// (intento imitar al form de tu imágen)
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
this->FormStyle   fsMDIForm;   
  
this->WindowState wsMaximized
  
this->BorderIcons >> biMinimize >> biMaximize;
}

void __fastcall TForm1::WMSysCommand(TWMSysCommand &msg)
{
  
unsigned int const sysCode msg.CmdType 0xFFF0;

  if (
sysCode == SC_MOVE || sysCode == SC_RESTORE)
    
msg.Result 0;
  else
    
TForm::Dispatch(&msg);


Saludos :)


La franja horaria es GMT +2. Ahora son las 22:44: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