Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2018
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Poder: 17
Neeruu Va por buen camino
Cool Crear y Destruir Formularios - Forma Correcta

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:
    1. Definir una variable del Tipo TFormX y Crear el Fomulario.
    2. 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)
__________________
Saluda Atte Neeruu!!! :)

Última edición por Neeruu fecha: 06-02-2018 a las 22:37:35.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
forma de programar no se si es la correcta ? gulder MySQL 4 05-04-2016 17:49:51
Liberar Tlist de forma correcta BDWONG Varios 3 01-11-2014 17:28:46
Forma correcta de conectar a la base.. linuxtin Conexión con bases de datos 4 19-07-2012 20:30:20
Crear formularios de forma dinamica istradlin Lazarus, FreePascal, Kylix, etc. 4 06-12-2007 15:30:40
Como destruir o liberar una forma maguib Varios 1 11-03-2005 19:39:02


La franja horaria es GMT +2. Ahora son las 17:46:18.


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
Copyright 1996-2007 Club Delphi