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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Como saber si un Treeview esta vacio y ...

Hola a todos

Tengo un Treeview que lo lleno en tiempo de ejecucion, y en algun momento necesito saber si este esta vacio
Tambien quisiera saber como ponerle la misma imagen del nodo padre a todos sus nodos hijos

He buscado en el foro, y por cierto hay bastantes temas sobre el treeview, pero no he encontrado lo que necesito.

Siguiendo lo que dice uno de esos hilos (no recuerdo ahora cual), pude ponerle una imagen a los nodo, pero a pesar de ponerle un numero diferente en cada index, me pone la misma imagen para todos los nodos.

Código Delphi [-]
...    
tnParentNode:=tvLista.Items.Add(nil,'Titulo 1');   
tvLista.Items.Item[0].ImageIndex:=1;  
...    
tnParentNode:=tvLista.Items.Add(nil,'Titulo 2');   
tvLista.Items.Item[0].ImageIndex:=5;   
...

Que estoy haciendo mal?

Que representa el indice de tvLista.Items.Item[0]

.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 20-12-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Código Delphi [-]
if tvLista.Items.Count = 0 then // Si es 0 = vacio

Y lo de las imagenes, estas asignando siempre una imagen al mismo nodo, el primero de la lista, prueba con algo parecido a esto:

Código Delphi [-]
...    
tnParentNode:=tvLista.Items.Add(nil,'Titulo 1');   
tnParentNode.ImageIndex:=1;  
...    
tnParentNode:=tvLista.Items.Add(nil,'Titulo 2');   
tnParentNode.ImageIndex:=5;   
...

Y haciendo esto, estas creando solo nodos "PADRE", si quieres añadir un hijo a un nodo, debes usar algo parecido a esto:

Código Delphi [-]
var
  tnParentNode: TTreeNode;
  tnChildNode: TTreeNode;

begin
  // creamos un padre
  tnParentNode:=TreeView1.Items.Add(nil,'Titulo 1');
  tnParentNode.ImageIndex:=5;
  // añadimos un hijo al padre creado anteriormente
  tnChildNode:=TreeView1.Items.AddChild(tnParentNode, 'Titulo 2');
  tnChildNode.ImageIndex:=6;

Saludos.

Última edición por xEsk fecha: 20-12-2008 a las 21:08:22. Razón: Añadidos comentarios
Responder Con Cita
  #3  
Antiguo 22-12-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Y haciendo esto, estas creando solo nodos "PADRE", si quieres añadir un hijo a un nodo, debes usar algo parecido a esto:
Pues yo hago nodos hijos y padres, lo que no puse el codigo completo para ahorrar espacio en el post, como usaba la misma forma para todos...

Haciendo lo que me dices
Cita:
tnParentNode.ImageIndex:=5;
no funciona, pues me dice que ImageIndex no esta declarada

Parece que no se puede poner directamente en la variable, debe ser de otra forma, pero yo no la encuentro

Disculpen mi desconocimiento, pero es que nunca habia trabajado con un treeview
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #4  
Antiguo 23-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
tnParentNode:=tvLista.Items.Add(nil,'Titulo 1');   
tvLista.Items.Item[0].ImageIndex:=1;  
...    
tnParentNode:=tvLista.Items.Add(nil,'Titulo 2');   
tvLista.Items.Item[0].ImageIndex:=5;

Igual es un error de copy & paste, pero ahí estás asignando el mismo item[0] distintos imageIndex, por tanto, todos tendrán el mismo.

El truco está en guardar temporalmente el nodo que has añadido, tal y como hace xEsk, aunque yo cambiaría el nombre a la variable para que quedara más claro:
Código Delphi [-]
NewItem:=tvLista.Items.Add(nil,'Titulo 1');   
NewItem.ImageIndex:=1;  
...    
NewItem:=tvLista.Items.Add(nil,'Titulo 2');   
NewItem.ImageIndex:=5;   
...
Como ves, primero se añade un elemento nuevo y se guarda la referencia en NewItem y ahora, se le cambia el imageIndex a ese NewItem. Ahí está la diferencia entre tu código y el de xEsk

Ese error que te da de "imageIndex no declarado" es extraño, lo estoy mirando y en delphi 7 si me aparece la propiedad imageIndex para un TTreeNode

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 23-12-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool

Tienes razon Lepe, el problema es que estaba tratando de asignarle ImageIndex al control TreeView (no me percate), en lugar de a la variable como me explicaron uds.
Ya todo me sale bien, Muchas gracias
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber si un Timage esta vacio Vlady Gráficos 8 11-04-2008 14:10:54
TreeView saber si esta extendido o plegado ascrnet Varios 3 21-12-2007 18:51:19
TreeView vacio Caro OOP 5 10-12-2007 21:29:40
Como saber que un List View esta vacio zvf OOP 3 19-09-2006 01:09:38
Como Saber Si Dbedit O Edit Esta Vacio mainau Varios 5 17-07-2004 12:42:04


La franja horaria es GMT +2. Ahora son las 16:56:42.


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