PDA

Ver la Versión Completa : Como usar los formularios MDI, constructores de componentes


Narlohe
06-12-2006, 19:02:13
Hola buenas tardes
Estoy haciendo una aplicacion con formularios MDI y al crear la primera ventana o formulario hija no se en que forma o bajo que evento puedo lograr visualizarla, Lo he intentando con showmodal pero no funciona, coloco el showmodal dentro del constructor en el formulario hijo. Estoy utilizando un popmenu para las opciones del formulario padre.


constructor Tfmnuevosalumnos.crear(aOwner:Tapplication);
begin
inherited create( self);
try
Tfmnuevosalumnos.showmodal;
finally
free;
end;


Muchas gracias.:)

roman
06-12-2006, 20:23:38
¿No estarás confundiendo? En una aplicación MDI el formulario padre tiene estilo (propiedad FormStyle) fsMDIForm y los formularios hijos tienen estilo fsMDIChild. El caso es que un formulario MDIChild siempre está visible por lo que apenas lo creas debería aparecer inmediatamente sin necesidad de Show o ShowModal.

// Saludos

nachoalbano
06-12-2006, 23:25:52
¿No estarás confundiendo? En una aplicación MDI el formulario padre tiene estilo (propiedad FormStyle) fsMDIForm y los formularios hijos tienen estilo fsMDIChild. El caso es que un formulario MDIChild siempre está visible por lo que apenas lo creas debería aparecer inmediatamente sin necesidad de Show o ShowModal.

// Saludos

Lo que te dice Roman es correcto. Otra de las cosas que podes hacer al definir un formulario de tipo MDIChild es removerlo de la lista de Auto-create Forms. Para hacer esto haces crt+shft+F11 (Proyect-->Option-->Forms) y pasas tu formulario MDIChild a la lista de Disponibles (la de la derecha).
En el boton que llamaria al formulario de mdiChild haces lo siguiente:

procedure TfmPrincipal.Button1Click(Sender: TObject);
begin
if not Assigned(form1) then
form1 := Tform1.Create(Application);
form1.Show;
end;


por otro lado tendrías que modificar otros eventos del Formulario MDIChild

procedure Tform1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure Tform1.FormDestroy(Sender: TObject);
begin
form1 := nil;
end;


espero que esto te sirva. Saludos

Narlohe
11-12-2006, 10:54:10
Hola muchas gracias por la orientacion realmente me ha servido de mucho.
:) .
Estoy haciendo una aplicacion con formularios MDI y para el manejor de la base de datos PL/SQl cualquier duda en que los pueda ayudar con gusto.:)