FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Creacion y destruccion de forms
Hola, grandioso foro.
Tengo la siguiente GRAN duda. Estoy realizando un proyecto y a medida q va creciendo, oviamente tarda mas en cargar , debido a la auto-creacion de los forms. Tengo entendido que debo crear los forms y destruirlos a medida q los voy utilizando, y he aqui mi gran problema. He visto otros hilos sobre esto, y he leido algunos libros al respecto, pero no he dado con la tecla He sacado los forms de las opciones auto-create del proyecto y dentro del codigo he puesto: Código:
try Application.CreateForm( tf_Listas, f_Listas); f_Listas.ShowModal; finally f_Listas.Destroy; end; Cual es la diferencia entre ShowModal y Show? Se debe hacer Destroy o Free?? Si lo hago de la manera descrita arriba, el formulario se abre correctamente, y me muestra los controles q tengo en él, sin embargo, cuando ejecuto un query y muestro los datos ( deberia ), en un rxgrid, se cierra el formulario y vuelve al menu principal. :confused Cualquier ayuda sera bienvenida. Saludos. Leo. |
#2
|
||||
|
||||
Pues de la manera en que lo creas, bastará con que en el evento OnClose del mismo pongas:
En cuanto a Show y ShowModal, como su nombre indica la segunda instrucción lo abre de forma modal es decir no podrás abandanor el formulario hasta que lo cierres o pulses en alguno de los controles que hayas habilitado. Un Saludo
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
La diferencia entre Free y Destroy, es que Free verifica si tu formulario existe (Self <> nil). Por lo que es preferible llamar a Free.
La otra forma es hacer (como comenta Marcos) Action:=CaFree; esto es identico a llamar a Release. La ventaja de esto es que se genera un mensaje al formulario pidiendo que se destruya, muy util cuando se esta dentro del formulario (como en el evento OnClose). Pero este último es mas lento, dado que se genera un mensaje el cual tiene que ser procesado y demas para recien liberarse. Para tu caso, lo que yo prefiero es llamar a Free.
__________________
[Crandel] |
#4
|
||||
|
||||
Gracias a ambos x sus respuestas.
Saludos. |
#5
|
||||
|
||||
Sobre la misma duda:
Alguno de Uds sabria decirme porque se me cierra solo el formulario, si lo hago de esa manera, modal y no autocreate??. Me muestra bien los controles pero luego de ejecutar un query y cuando deberia mostrar los datos en una grilla, se cierra el form Gracias. |
#6
|
||||
|
||||
Supongo que ejecutas la consulta pulsando en un botón, en este caso mirate la propiedad ModalREsult del mismo, por ahí puede venir la solución.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#7
|
||||
|
||||
Cita:
// Saludos |
#8
|
||||
|
||||
Cita:
Lo que se podría hacer para evitar eso (si la creación y destrucción estan por separados) es poner despues de free Form2 := nil;
__________________
[Crandel] |
|
|
|