Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Estimado Experto
Experto: antipauli
Valoración: 4
Fecha: 09/07/2003


Estimado Experto
Necesito un objeto que me sirva como contenedor de formas en una aplicacion MDI, lo que pasa es que estoy desarrollando una aplicacion donde necesito desplegar formas dentro de otra forma que servira como forma padre se que con aplicaciones MDI puedo hacer esto, pero el problema es que tengo que desplegarlas dentro de un lado de la forma padre, mejor dicho la forma padre la debo dividir en zonas y tener al lado izquierdo un menu desplegable y al lado derecho ir desplegando las formas hijas de acuerdo al click que le de al menu, el problema es que no se como hacer que las formas hijas se desplieguen solo en una zona de la forma padre o en un objeto de la misma por ejemplo un Panel y desplegar las formas hijas dentro de ese panel...necesito mucha ayuda con esto por favor.....

Re: Estimado Experto
Es muy sencillo, precisamente hice una aplicación similar. Divides la form padre con 2 paneles, uno pequeño a la izquierda y otro grande en la derecha alineados alclient. Entonces, cuando clickes en el menú lo único que tienes que hacer es instanciar el form en concreto y asignarle como parent el panel derecho y ya está. Ej. var AForm : Tform1; begin Aform := Tform1.create(Aowner); Aform.Parent := panel1; ... Importante es que para ser parent debe ser un twincontrol, claro está. Saludos, Antipauli

Estimado Experto
Estimada Antipauli Agradezco muchisimo que me hayas contestado, y lamento molestarte de nuevo pero el inconveniente ahora es que no se exactamente a que te refieres con instanciar el form hijo, es más, no se como hacerlo, si no te incomoda hacerlo te agradeceria que volvieras a contestarme esxplicandome un poco mas puntual, como hacerlo. Agradezco atencion al presente y la colaboracion que puedas ofrecerme posteriormente. Atte Jessica.

Re: Estimado Experto
Lo primero, soy un chico je, je... sí ya sé es un nombre raro... A ver, el tema es si en las Options de la aplicación tienes los forms autocreate o available. Si estan en available, deberás instanciarlos primero (var AForm : Tform1; begin Aform := Tform1.create(Aowner); ) es decir crear un objeto de la clase tform1 o la que sea. Para eso la defines en var y luego le haces el create y le asignas el Parent el del panel. Si tienes los forms autocreate significa que cuando ejecutes la aplicación se crean y cargan todos en memoria. Muchas veces, si tienes 300 forms es un desperdicio de tiempo y memoria si luego al final usas sólo 10, por ejemplo. Si los tienes autocreate (opción por defecto) no hace falta que los instancies ya que se encarga la aplicacion (en Application/View Source verás como te crea todos los forms) y sólo deberás asignarles el Parent := Panel1.Parent, en vez del Parent del form (por defecto). Puedes consultar una muy buena página de trucos que te habla de ello y mucho más: www.q3.nu/trucomania Saludos, Antipauli

Estimado Experto
Hola Bebe de nuevo de molesto y disculpa por haberme referido antes a ti como ella, pero es que con ese loguin pense otra cosa, bueno me parece mucho mejos que seas un chico ya que me encanta tratar mejor con chicos, mira bebe hize lo que me dijiste las formas estan en el options de la aplicacion en la opcion de autocreate ya que son pocas y no hay problema de recursos en este caso si fueran las 300 que tu dices quizas si habria problema...bueno en fi el caso es que solo le di el Formahija.Parent := Panel1.Parent dentro de la forma padre y me saca unos errores que no entiendo el problema es que no soy para nada experta en delphi y solo llevo casi un mes apenas programando con delphi, podrias enviarme unas lineas de codigo con un ejemplo sencillo de solo dos formitas, te lo agradeceria en el alma bebe.

Re: Estimado Experto
No hay ningun problema bebita, je je. Es muy simple creas 2 forms: form1 y form2. Form1 será el principal. En él pones un botón y un panel y en el evento del botón escribes: procedure TForm1.Button1Click(Sender: TObject); begin form2.Parent := panel1; form2.WindowState := wsMaximized; form2.Show; end; Con esto, muestras el form como normalmente se debería pero dentro del panel. Al modificar su parent, al form2 se le indica que su contenedor no es la aplicación sino el panel. Para cualquier otra cosilla, ya sabes. Saludos, Antipauli

Pregunta finalizada. Valoración: 4.
Muy Bien. Me ha sido de gran utilidad


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/delphi/respuestas/564253/estimado-experto