PDA

Ver la Versión Completa : MDI Form


JorgeBec
29-04-2004, 18:55:58
Sigo con mis novatadas!, una pregunta estoy haciendo un proyecto MDI, y quiero que una forma que es child no aparezca solo hasta que la invoque, y otra pregunta porque al darle ShohModal a una forma me dice que no puede hacerla visible???


agradecere sus respuestas...

roman
29-04-2004, 19:57:39
Que yo sepa los formularios mdiChild no pueden ser modales, y de hecho no están pensados para eso.

En cuanto a la otra parte, lo usual con formularios mdiChild es quitarlos del "auto-create" y crearlos tú mismo cuando sea necesario. Los formularios mdiChild siempre son visibles y por ello, si ya están creados en "auto-create" no hay forma de evitar que se presenten.

// Saludos

JorgeBec
29-04-2004, 20:18:08
gracias por la respuesta, lo que pregunte ya lo soluciones, pero ahora tengo otra pregunta, la forma MDIChild no la puedo cerrar, solo se minimiza, que debo configurar para poder cerrarla???

roman
29-04-2004, 20:24:47
Por lo mismo, no puedes ocultarla y tendrás que destruirla. En su evento OnClose pon Action := caFree;

// Saludos

JorgeBec
29-04-2004, 23:37:22
Funcionó Roman, mil gracias...

delphi.com.ar
30-04-2004, 00:41:36
Un poco tarde, pero te cuento algo: Cuando tengo un formulario que tiene que verse como MDIChild y a su vez, cuando es llamado de otro lado tiene que verse como modal, lo que hago es tenerlo guardado como fsNormal, entonces cuando necesito que sea modal lo creo y hago un ShowModal, pero cuando necesito que sea MDIChild, lo creo y le asigno al FormStyle el valor fsMDIChild, entonces se muestra automáticamente como MDIChild...

Saludos!

elbilla
11-11-2004, 17:42:14
He visto varios hilos de este tipo pero me estoy volviendo loco con los Mdi Child...
Tengo un Form principal Mdi Form, y varios Mdi Child.
Los Mdi Child los abro así:

If FORM <> nil then
FreeAndNil(FORM);
FORM:= FORM.CREATE (SELF);
FORM.show;


Luego en el OnClose lo cierro con el Action:=caFree, pero si lo vuelvo a abrir me da un error...He probado a cerrarlo con el FreAndnil(FORM) pero al volverlo abrir m vuelve a dar error...
EL caso es q al abrirlo de la manera q pongo, lo puedo abrir y cerrar poniendo el FreandNil en el OnCLose las veces q quiera sin q pase nada, pero si pongo el FreeandNil en un boton entonces me da error. Lo hace una vez y la siguiente vez q entro ya me da error...
Un saludo..
Gracias

roman
11-11-2004, 17:47:56
No entiendo bien esta forma que usas para crear los formularios pero te puedo decir dos cosas:

La línea

FORM:= FORM.CREATE (SELF);

no es correcta. Cuando construyes un formulario debes usar el identificador de clase y no la variable en sí. Esto es, si FORM es de tipo TMiForm, lo correcto es:

FORM:= TMiForm.CREATE (SELF);

La otra cosa es que para liberar un formulario desde algún evento o método del mismo formulario (como el OnClick de un botón) debes usar el método Release en lugar de Free, que es el que ejecuta FreeAndNil.

// Saludos

elbilla
11-11-2004, 17:56:46
Perdona, los creo como dices....Form:= Tform.create(self)

Voy a probar lo del Release a ver si ese es el fallo......(Espero q si)....

Un saludo

Nada, con el Release lo cierra también, pero al volver a acceder a dicho Form, me da un error de memoria...No sé pq puede ser...