Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2003
ibarrols ibarrols is offline
Miembro
 
Registrado: may 2003
Posts: 13
Poder: 0
ibarrols Va por buen camino
Borrar items de un TreeView

Hola Foro!!!

Quiero borrar todos los items(viejos) para luego cargarlos con distintos items(nuevos) y no se como hacerlo...

será que alguien me podrá ayudar???

Muchas Gracias....
__________________
Sebastian Ibarrola
UAP
Responder Con Cita
  #2  
Antiguo 05-06-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
TreeView1.Items.Clear;

Cita:
Muchas gracias ...
... de nada
Responder Con Cita
  #3  
Antiguo 06-06-2003
Roy Roy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Entre Ríos/Argentina
Posts: 22
Poder: 0
Roy Va por buen camino
Question

... y si cada ítem tiene la propiedad Data apuntando a estructuras que utilizan memoria (creados con 'new' de un tipo 'record', por ejemplo)? La función 'clear' libera esa memoria también ?

Gracias.
Responder Con Cita
  #4  
Antiguo 06-06-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 06-06-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Es un error MUY COMÚN, para eso existe un evento OnDeletion que se ejecuta cada ves que se elimina un nodo, a ahí puedes encargarte de eliminar lo que tengas en la propiedad Data.

Y agrego que para que esto sea mas rápido, evitando que re-dibuje el árbol cada ves que se elimina un nodo, te conviene hacer algo así:
Código:
TreeView1.Items.BeginUpdate;
try
  TreeView1.Items.Clear;
finally
  TreeView1.Items.EndUpdate;
end;
También lo puedes hacer a la hora de cargar los nodos. Estoy seguro que si tu árbol es tiene muchos nodos me lo vas a agradecer...

Saludos!

PD:
El hilo anterior fue para competir con Román en la respuesta mas corta!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 06-06-2003 a las 03:13:18.
Responder Con Cita
  #6  
Antiguo 06-06-2003
Roy Roy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Entre Ríos/Argentina
Posts: 22
Poder: 0
Roy Va por buen camino
Thumbs up

Estaba por agradecer la respuesta corta del moderador.... aunque reconozco que con algo de ironía, aunque tampoco mi pregunta daba para mucho más. Pero minuto a minuto la respuesta se fue ampliando (más rápido de lo esperado) y lo he probado todo y funciona muy bien.

MUCHAS GRACIAS !! (perdonando las mayúsculas esta vez....)

Roy
Responder Con Cita
  #7  
Antiguo 06-06-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por delphi.com.ar
Código:
TreeView1.Items.BeginUpdate;
try
  TreeView1.Items.Clear;
finally
  TreeView1.Items.EndUpdate;
end;
Una observación: son innecesarias las llamadas a BeginUpdate y EndUpdate así como el encajarlo en un bloque try-finally-end ya que todo esto lo hace internamente el método Clear.

Cita:
Posteado originalmente por delphi.com.ar
PD:
El hilo anterior fue para competir con Román en la respuesta mas corta! [/b]
Buen intento pero no considero que me hayas superado
En la que yo dí no había nada más que decir. Bastaba que buscara "Pos" en la ayuda para ver los parámetros ya que la función no tiene ninguna complicación. Sin embargo en este caso es más difícil encontrar en qué parte de la ayuda dice que Data no se libera.



// Saludos
Responder Con Cita
  #8  
Antiguo 06-06-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
F1
__________________
Guía de Estilo
Responder Con Cita
  #9  
Antiguo 06-06-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Posteado originalmente por roman
[b]Una observación: son innecesarias las llamadas a BeginUpdate y EndUpdate así como el encajarlo en un bloque try-finally-end ya que todo esto lo hace internamente el método Clear.
En la versión de Delphi que yo tengo (5), no es así, llama directamente a la API, pero acabo de comprobar que en la 7 si...


Esto es un problema!!!!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 06-06-2003 a las 17:14:06.
Responder Con Cita
  #10  
Antiguo 06-06-2003
Roy Roy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Entre Ríos/Argentina
Posts: 22
Poder: 0
Roy Va por buen camino
Question

¿ En qué tipo de documentación se encuentra ese tipo de información: la que explica el funcionamiento interno de un 'Clear', por ejemplo ?

Roy
Responder Con Cita
  #11  
Antiguo 06-06-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
En la ayuda.. pero no es muy extensa en este tema en particular. Lo que nosotros estamos discutiendo es el código que ejecuta el clear, puedes acceder a él rápidamente haciendo Ctrl+Click en el método, o abriendo la unit ComCtrls.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #12  
Antiguo 06-06-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por Roy
¿ En qué tipo de documentación se encuentra ese tipo de información: la que explica el funcionamiento interno de un 'Clear', por ejemplo ?
En realidad en ninguna Roy, estamos haciendo "trampa" al revisar el código fuente de Delphi. Lo cierto es que debería estar en la documentación lo mismo que lo del Data. Las llamadas a Begin Update y EndUpdate no son tan problemáticas ya que pueden anidarse unas con otras y lo único que hacen es aumentar o decrementar un contador. Pero cada bloque try es un aumento a la carga de un programa y si puede evitarse qué mejor. Ya que no está documentado lo más correcto sería proceder como delphi.com.ar para más seguridad. Si estuviera documentado uno podría omitirlo tranquilamente.

// Saludos
Responder Con Cita
  #13  
Antiguo 06-06-2003
Roy Roy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Entre Ríos/Argentina
Posts: 22
Poder: 0
Roy Va por buen camino
Thumbs up

Gracias por la aclaración.

Roy
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 23:35:00.


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