PDA

Ver la Versión Completa : sugerencia Formas MDI?


karocs
16-05-2005, 19:36:49
Saludos

es recomendable utilizar MDIForms y MDIchild ?, es que he hecho una prueba pequeña y solo con dos tres formas y parece que bien, pero cuando son muchas ?.

y como se cierra una forma child es que parece dejarla minimizada en la forma principal cuando le digo close..

agradeceria mucho su ayuda..super urgente

quetzal
16-05-2005, 20:46:21
para que se cierre le tienes que poner en el onclose action:=caFree;

karocs
16-05-2005, 21:33:28
Saludos..

Muchas gracias...
intente lo que sugeriste pero ahora se se quiere abrir la forma de nuevo me sale un error... en el .show

Gracias de antemano

roman
16-05-2005, 21:57:00
intente lo que sugeriste pero ahora se se quiere abrir la forma de nuevo me sale un error... en el .show


Action := caFree hace que el formulario se destruya así que debes crearlo cada vez que desees mostrarlo. Si te preguntas por qué no mejor lo ocultas en lugar de destruirlo es porque los formularios MDIChild no pueden ocultarse.

// Saludos

quetzal
16-05-2005, 23:03:22
como con el action := caFree estas destruyendo la ventana, la tienes que crear de nuevo cuando la quieres mostrar de nuevo

en la parte del show
if Form1.FindComponent('ventana a crear')=nil then
ventana a crear:=Tventana a crear.create(Form1);
ventana a crear.Show;
ventana a crear.WindowState:=wsNormal;

espero te sirva

scotex
17-05-2005, 12:33:07
Tambien puedes crearlas con

application.createform(Tform1, Form1);
Form1.show;

recuerda que tienes que ponerlas en el proyecto de manera k no las cree al comienzo, No ponerlas en AutoCreate.
Un saludo.

COCOL
18-05-2005, 01:26:39
Bueno... yo tambien pase por eso del "show".. pero ahora ya entendi como manejar los formularios dinamicamente...

en vez de usar show para mostrar el formulario, suponiendo que tu variable para Form es FormChild del tipo TFormChild usa lo siguiente:

if not Assigned(FormChild) then
Application.CreateForm(TFormChild, FormChild); //para crear el form en memoria

y en el evento OnClose de FormChild escribe esto :

Action := caFree; //para liberar el formulario de memoria
FormChild := nil; //para poder usar la funcion Assigned()

y listo... no uses ni show() ni hide() para que no tengas problemas...

espero haber sido de ayuda...

karocs
19-05-2005, 20:23:17
Saludos

Muchisimas Gracias por su ayuda, voy a intentar la ultima sugerencia, por que ahora me esta molestando el showmodal, cuando intento mostrar dos ventanas y en las demas me funciona bien y no se porque..

gracias de nuevo...