Necesito un objeto que me sirva como contenedor de formas en una aplicación MDI

Necesito un objeto que me sirva como contenedor de formas en una aplicación MDI, lo que pasa es que estoy desarrollando una aplicación donde necesito desplegar formas dentro de otra forma que servirá 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

1 Respuesta

Respuesta
1
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á.
Estimada Antipauli Agradezco muchísimo 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 agradecería que volvieras a contestarme esxplicandome un poco más puntual, como hacerlo.
Agradezco atención al presente y la colaboración que puedas ofrecerme
Posteriormente.
Atentamente
Jessica.
Hola Bebe de nuevo de molesto y disculpa por haberme referido antes a ti como ella, pero es que con ese loguin pensé otra cosa,
bueno me parece mucho mejos que seas un chico ya que me encanta tratar mejor con chicos,
mira bebe hice lo que me dijiste las formas están en el options de la aplicación en la opción de autocreate ya que son pocas y no hay problema de recursos en este caso si fueran las 300 que tu dices quizás si habría 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, podrías enviarme unas lineas de código con un ejemplo sencillo de solo dos formitas,
te lo agradecería en el alma bebe.
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 están 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 aplicación (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
No hay ningún 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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas