FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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)?? De antemano gracias |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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 Que hacer?? |
#4
|
|||
|
|||
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
|
#5
|
||||
|
||||
Estás llamando a la instancia en lugar de a la clase para el Create. Igual para el resto de llamadas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
CreateForm demasiado lento | kverna | Varios | 6 | 06-03-2008 14:32:14 |
Crear formularios de forma dinamica | istradlin | Lazarus, FreePascal, Kylix, etc. | 4 | 06-12-2007 15:30:40 |
Tapplication CreateForm | jlrbotella | OOP | 1 | 21-08-2007 11:32:51 |
Crear una Dll con mudulos y formularios | mcarazas | Varios | 3 | 10-06-2006 04:02:21 |
Crear formularios en tiempo de ejecución | Caro | Varios | 2 | 25-08-2005 14:27:39 |
|