¿Cómo saber si un formulario está creado?
Hola a tod@s.
Para hacer consultas de tablas tengo un formulario especial de la clase TForm llamado TNTConsulta. Cuando quiero hacer una llamada al mismo lo declaro como una variable local, lo creo y llamo a una función del mismo, de la siguiente manera:
.... bien, por otros temas necesito saber si la variable DialogoConsulta ha pasado ya por el .Create. He probado a ver si es igual a nil pero no lo es y con el depurador no se puede saber el valor que tiene hasta que no se ha creado, o sea, que no sé qué valor tiene antes de pasar por el .create. No se si me he explicado con claridad. Gracias y un saludo |
Si tu variable fuera global en lugar de local —quizá tengas una variable llamada "NTConsulta"—, podrías usar "FreeAndNil (NTConsulta)" En lugar de "NTConsulta.Free". Hace lo mismo (destruir el objeto), pero asignándole Nil a la variable. Así es más fácil determinar luego si el objeto existe o no, esto siempre que no se dé el caso de tener dos formularios de consulta creados, pues la variable solamente puede apuntar a uno de ellos.
Regreso a la cama... |
El caso es que Delphi no inicializa las variables locales, de ahí que no puedas saber qué valor tiene, es más, fuera de esa rutina ni siquiera sabes si ha sido creado o no.
Quizás puedas consultar el objeto Screen donde aparece todas las ventanas que tú has creado:
Otra cosa es que antes de crear la ventana, puedes asignar el valor nil a la variable temporar, así si puedes saber si ha sido creado. Incluso puedes usar FreeAndNil dentro de la rutina, como dice Al González, para testear su valor y tal. |
Ok, lo pruebo.
Gracias a ambos y un saludo. |
Vale.
Esto me valdría, el problema es que el formulario no tiene FreeAndNil, solo Free :confused:. Imagino que si solo lo igualo a nil irá creando un formulario nuevo en cada .create, ¿no?, ¿qué solución se os ocurre?. |
Se usa:
|
Cita:
Me vale, gracias a todos. |
Cita:
|
La franja horaria es GMT +2. Ahora son las 00:28:40. |
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