Diferencia de crear formularios con Create(self) y con Application.CreateForm
Hola a todo el foro, tengo una duda cuando creo formularios dinámicamente se crean con:
Pero también se pueden crear con:
O cuál es la diferencia entre estas dos sentencias? Gracias y saludos.. PD: Mi aplicación consta de más de 20 formularios y se tarda bien mucho en cargar, y quiero que la carga sea más rápida.. Pero como paso informacion entre formularios al seleccionar una opción creo los form que voy a necesitar para ejecutar dicha opción, y al salir de la misma libero los form creados. La incógnita es, es vieble hacerlo con Application.CreateForm(TForm1, Form1)??:confused: De antemano gracias |
Hola,
Todo se resume en quién es el "dueño" ("owner") del formulario, esto es, quién es el encargado de liberarlo, cuando a su vez sea liberado. Si asignas como dueño de un formulario a otro, como cuando creas un formulario usando "Self" (otro formulario) como "dueño", dicho formulario será liberado automáticamente, cuando el formulario "dueño" sea liberado a su vez. Si sigues el método "Application.CreateForm()", verás que al formulario que se crea se le asigna como dueño el mismo objeto "Application", de modo que el formulario será liberado, automáticamente, cuando el objeto "Application" sea liberado a su vez. Piensa que incluso puedes crear un formulario de este modo:
Con "nil" no estás asignando ningún dueño para el formulario "TSampleForm", de modo que en este caso hemos de ser nosotros mismos quienes nos encargamos de liberarlo, y así lo hacemos más abajo, como puedes ver. ;) |
Haber si te entendi entonces lo que yo hago es lo siguiente (pero me marca error :():
En un Form1, cuando doy click a la opcion 1 hago lo sig:
Una vez dentro del menu puedo ejecutar cualquier operacion y mandar llamar a Form2,3,4,5,6,7 previemente creados. Cuando dentro del menu le pongo salir, hago:
Pero cuando dentro del menu de la opcion 1 mando llamar a Form2.Show, me marca error.. De que no existe esa direccion de memoria:confused: Que hacer?? |
Se supone q si le doy salir, me libera todo, y me regresa al menu de opciones, pero si ejecuto cualquier form creado previamente, me deberia de visualiar el form.. y no lo hace :mad:
|
|
La franja horaria es GMT +2. Ahora son las 00:45:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi