Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Form MDIChild se queda minimizado y no se cierra. (https://www.clubdelphi.com/foros/showthread.php?t=93419)

Angel.Matilla 20-09-2018 09:51:57

Form MDIChild se queda minimizado y no se cierra.
 
Gracias a todos los que me ayudasteis en mi anterior hilo sobre este tema. Tengo ahora otro problema que no veo como resolver y me tiene perplejo.


Otro de los formularios que he definido como MDIChild en la aplicación me está despistando un montón.
1. Lo llamo así:
Código PHP:

void __fastcall TfMenu::DatFijClick(TObject *Sender)
{
     
Application->CreateForm(__classid(TfDatFij), &fDatFij);
     
fDatFij->Show();


Se abre sin ningún problema y se muestra bien, pero a la hora de cerrarlo me hace esto:

me lo deja minimizado abajo a la izquierda. El código que tengo puesto para cerrarlo es este:
Código PHP:

void __fastcall TfDatFij::Button11Click(TObject *Sender)
{
     
this->Close();
}
//---------------------------------------------------------------------------

void __fastcall TfDatFij::FormKeyPress(TObject *Senderchar &Key)
{
     if (
Key == 27)
     {
          
Key 0;
          
Button11Click(NULL);
          return;
     }


Da lo mismo que pulse en el botón asociado al evento, que pulse en el cuadro CERRAR del formulario o que pulse la tecla escape; siempre me lo deja minimizado y no lo entiendo ya que el código para cerrar es el mismo que en otros formularios que funcionan bien y las propiedades son las mismas.

Angel.Matilla 20-09-2018 09:54:25

Se me está aocurriendo una cosa: ¿Puede ser que ese comportamiento se deba a que está asociado a una opción secundaria de un TMainMenu en vez de la opción prinicpal?

Casimiro Notevi 20-09-2018 10:05:06

Del libro La cara oculta de Delphi 4 y también en La cara oculta de C++ Builder.
Cita:

Si la aplicación es MDI la ventana principal debe tener en FormStyle el valor fsMDIForm, mientras que cada ventana hija debe tener el estilo fsMDIChild.

Esto no quita que existan ventanas dentro de la aplicación cuyo estilo sea fsNormal o fsStayOnTop, principalmente cuadros de diálogo con ejecución modal.

Cuando una ventana tiene el estilo fsMDIForm o fsMDIChild no puede cambiar su propiedad Visible a False. Además, el valor inicial del parámetro Action en el
evento OnClose es caMinimize, con lo que al intentar cerrar una ventana hija MDI lo que lograremos es minimizarla, en realidad.

Angel.Matilla 20-09-2018 11:37:53

Cita:

Empezado por Casimiro Notevi (Mensaje 528514)
Del libro La cara oculta de Delphi 4 y también en La cara oculta de C++ Builder.

Me sonrojo de vergüenza por no haber caido en la cuenta. :(

Casimiro Notevi 20-09-2018 12:52:56

Con la de cosas que hay que mantener todo el día en la cabeza... estaríamos todos siempre rojos :)

Young 21-09-2018 17:17:18

En resumen en el evento OnClose debe asignar caFree al parámetro Action para que se cierre y libere el formulario.

Saludos.


La franja horaria es GMT +2. Ahora son las 07:05:01.

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