Hola a Todos...
Capaz esta pregunta ya esta contestada en el foro, la busque pero no encontré...
Mi pregunta es la siguiente:
Cual es la manera correcta de crear un formulario?
Planteo el escenario:
- Tengo una aplicación mdi que tiene su menú principal donde llama a los distintos form que se crean a demanda.
- Ahora cuando hago click en un item del menú se va a crear un FormX.
- Ahora cual es la forma correcta:
- Definir una variable del Tipo TFormX y Crear el Fomulario.
- Utilizar la variable que automaticamente se crea con el Form (FormX:TFormX)
Para Cerrar el formulario , tengo un ToolBar con un TWindowClose.
Pero este no asigna Nil a la variable FormX. ¿Lo correcto seria que asigne nil a la variable FormX en el evento destroy?
Y Porque en el Create de un Form, la Variable FormX es igual a Nil pero Self no? Cual es la diferencia?
Ahora voy a contar porque me surgen estas dudas...
Tengo una app con casi 300 formularios. en la mayoria de los formularios, en el create del mismo llamo a un procedimiento que me pinta los componentes de x color.
Hasta acá sin problemas. Pero resulta que ahora he tenido que agregar nuevos formularios y se da que aveces abro este form nuevo (FormX) y en el procedimiento que pinta los componentes me arroja un access violation. O se me da que abro un determinado form y luego el FormX y arroja el AV.
Llevo mas de una semana tratando de encontrar el porque con estos nuevos formularios se produce el error y no encuentro. Ya cree un proyecto nuevo, probé en otra pc, hice los formularios desde 0... Y nada el error persiste...
Entonces empece a ver mas detalladamente y note que (Yo siempre utilice la variable Form, que crea automáticamente el formulario) la primera ves que entra el formulario al procedimiento que pinta FormX = Nil, ahora la segunda vez ( Osea, lo cierro con el botón de cerrar TWindowCloe) y si lo abro de nuevo FormX tiene cosas adentro, no viene con Nil.
Puse FormX := Nil en el evento destroy del FormX y el problema se soluciono.
Ahora me queda la gran incógnita y es lo que me come la cabeza, de porque el error solo con esos formularios.
Llegue a pensar a al pasar algún tamaño de ejecutable o uso de memoria a lo mejor cambia la administración y por eso surge ahora el error.. la verdad no se...
Y por eso es que viene mi pregunta... ahora estoy pensando que a lo menor la forma en la que estoy creando y destruyendo los formularios no es la correcta, aunque esto no me responda porque en 299 Formularios no da el error y en el 300 si...(Puse estos mismos formularios en proyectos aun mas grandes y el error no se da)