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
|
||||
|
||||
Eliminar Objetos en tiempo de ejecucion
Buenas tardes a todos, vengo con una enorme duda, estoy creando objetos en tiempo de ejecucion todo hasta ese punto esta bien y no existe ningun problema, pero si quiero volver a refrescar la informacion, y recargar todos los objetos apartir de la nueva informacion sumistrada, pienso que lo util seria eliminarlos, para evitar errores dado que estan los objetos funcionando bien, pero cambia cierta informacion... y quisiera eliminarlos, todo estos son groupbox intente este codigo
eso esta claro dentro de un ciclo for.... me elimina unos cuantos pero otros me los salta, alguien puede decirme que estoy haciendo mal? |
#2
|
||||
|
||||
Para liberar y destruir objetos en Delphi, no se debe llamar directamente al destructor ,sino mas bien al método Free, éste ya se encarga de llamar internamente al destructor, no sin antes hacer algunas cosas adicionales..
En otras palabras tu código anterior quedaría de ésta forma: Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#3
|
||||
|
||||
He comprobado que si vas de abajo hacia arriba la lista de componentes se vuelve inválida al borrar alguno de ellos, por esto he hecho una prueba recorriendo la lista al revés y funciona. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#4
|
||||
|
||||
Solucionado
Gracias me ha sido muy util, pensar que solo mi error era por la manera de correr el ciclo.
Gracias |
#5
|
||||
|
||||
Hola adeszeus.
Además de lo dicho por rgstuamigo, cosa muy cierta ya que Free verifica la existencia del objeto antes de liberarlo, tambíen es importante el sentido en que se ejecute el ciclo for. Si lo haces de este modo: Corres el riesgo de obtener errores de índice o que no se liberen algunos componentes. Ya que cuando el un componente es borrado, la posición que tenía es ocupada inmediatamente por el componente sucesor. Supongamos Components[1] ( componente 'A') es liberado; el componente 'B' ocupa su lugar. Cuando vaya a liberar Components[2] en realidad estará liberando el 'C'. Y así sucesivamente... Lo correcto sería:
Saludos. Edito: Veo que marcos fué más rápido en editar. ( la mala costumbre de no recargar la página... ) Última edición por ecfisa fecha: 09-11-2010 a las 22:58:57. |
#6
|
||||
|
||||
Gracias !!!!
Pues Muchas Gracias por el tip, me han explicado una duda que tenia de hace tiempo, jajajaja, en fin ha sido disipada y pues gracias por el tip y explicacion de la eliminacion de objetos
|
#7
|
|||
|
|||
Una consulta al tema
Hola a todos, he estado leyendo esto y lo he aplicado porque lo necesitaba. Yo tengo en el Form varios Labels, algunos creados en tiempo de diseño y otros en tiempo de ejecución. Utilizando el código antes mostrado por marcos me elimina todos los componentes labels del Form. Quería saber si se pueden eliminar solo aquellos Label que fueron creados en tiempo de ejecución y cuya cantidad es aleatoria.
Desde ya agradezco la respuesta. Saludos!!! |
#8
|
||||
|
||||
Intenta con un ciclo
Supongo que tus objetos creados en tiempo de ejecucion son Con cierto nombre independiente al predefinido por Delphi (Labels) y despues de esto con un numero consecutivo, por que no lo realizas con un ciclo e ir eliminando los objetos de esa manera, identificandolos por el nombre y despues por su numero de indice y despues liberarlo, eso es lo que mejor se me ocurre. Puedes intentar esto que solucionamos en otro post
http://www.clubdelphi.com/foros/showthread.php?t=70770 Última edición por adeszeus fecha: 25-11-2010 a las 15:18:54. Razón: Agregar Info |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear Objetos en tiempo de ejecucion | mmtaffarel | OOP | 8 | 14-01-2024 17:55:25 |
Agregar objetos a un GridPanel en tiempo de ejecución | Luis Abraham | Varios | 2 | 25-06-2008 04:27:12 |
Dudas Crear Objetos en Tiempo de Ejecución | Deiv | OOP | 9 | 09-08-2007 01:13:15 |
TClientDataSet y objetos de campos añadidos en tiempo de ejecución | Berto2003 | Conexión con bases de datos | 2 | 04-03-2004 09:26:27 |
Objetos creados en tiempo de ejecución | Scocc | OOP | 4 | 13-06-2003 20:55:29 |
|