Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con Forms MDI (https://www.clubdelphi.com/foros/showthread.php?t=47652)

novato03 04-09-2007 05:21:54

Problema con Forms MDI
 
Hola amigos del clubdelphi, estoy tratando de invocar un formulario fsMDIChild
desde un formulario fsMDIForm, pero al hacerlo con el siguiente código...:confused:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
   form2:=TForm2.Create(self);
   try
   Form2.ShowModal;
   finally
      Form2.Free;
   end;
end;

me presenta el siguiente error...
------------------------------------------------------------------------
Project Project1.exe raised exception class EInvalidOperation with message 'Cannot make a visible window modal'. Process stopped. Use Step or Run to continue.
-------------------------------------------------------------------------

El asunto es que le coloque la propiedad visible a false pero dice que el formulario no puede estar Hide, de tal forma que lo deje en True.

Por cierto en Project del menu el formulario esta en la ventana de Available forms.

Si alguien me puede dar una ayudita con esto se lo agradecería, gracias de antemano.

Delphius 04-09-2007 05:25:41

Hola novato03,
Tu error está en que estas tratando de mostrar modalmente una ventana hija. Y esto está fuera del uso esperado.
No tiene sentido alguno mostrar modalmente una ventana hija. En vez de usar ShowModal, emplea Show().

Saludos,

novato03 04-09-2007 05:36:36

Asunto
 
Empleo el show pero no me muestra nada, solo un parpadeo y listo:confused:

Delphius 04-09-2007 05:47:46

Hola,
Mira, yo di por entendido que el uso del try/except lo destruirías.... ¿porque no te fijas lo que realmente haces?

Si tu indicas:
Código Delphi [-]
try
form2.show
finally
form2.free;
end;

Lo que consigues es crear e inmediatamente liberar el form2. La forma correcta:
Código Delphi [-]
form2 := TForm2.Create(selft);
form2.Show;

El uso del try/finally tal como lo tenias inicialmente te serviría si crearas ventanas modales, no MDIChild.

Saludos,

novato03 04-09-2007 05:59:35

Asunto
 
Muchas gracias amigo delphius, funciona muy bien el único detalle es que cuando presiono el botón de salir el formulario solo se minimiza, acaso hay otra forma de cerrar estos formularios child?:confused:

Delphius 04-09-2007 06:08:37

En una aplicacion MDI, ese es el comportamiento esperado. Lo habitual, si tu deseas que se cierre debes setear el valor de la variable action del evento onClose, por caFree:

Código Delphi [-]
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := cafree;
end;

Saludos,

novato03 04-09-2007 06:16:54

Asunto
 
Muchas gracias por tu ayuda amigo Delphius, ahora funciona perfectamente....Gracias:)


La franja horaria es GMT +2. Ahora son las 21:18:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi