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 07-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
TreeView... Como hago esto?

Les explico, tengo un tree view con estos items...

lunes
>>|mañana
>>>>>|actividad
>>|tarde
>>>>>|actividad
martes
>>|mañana
>>>>>|actividad1
>>>>>|actividad2
>>>>>|actividad3
>>|tarde
>>>>>|actividad
miercoles
>>|mañana
>>>>>|actividad1
>>>>>|actividad2
>>|tarde
>>>>>|actividad1
>>>>>|actividad2
>>>>>|actividad3
>>>>>|actividad4

Siendo actividad los items q pueden variar... o sea... pueden haber una o varias actividades...

Y bueno lo q estoy intentando hacer es guardarlas en un archivo xml...
el problema surge cuando tengo q reccorrer los items y subitems... lo estoy haciendo de la siguiente manera:
Código Delphi [-]
for i:= 0 to treeview1.items.count do //Para recorrer los dias
 begin 
    for j:= 0 to treeview1.items[i].items.count do //Para ver si es mañana o tarde
     begin
         for y := 0 to treeview1.items[i].items[j].items.count do //Recorro las actividades
              begin
 
              end;
     end;
 end;

Pero resulta q haciendo de esta forma nunca llega a recorrer los otros dias... o sea... no llega al martes ni nada de eso por lo q supongo q estoy moviendome mal entre los items y subitems...

Alguien sabe como puedo moverme en el treeview? Es decir como deberian ser los "for"

Desde ya muchas gracias

{Saludos}

Última edición por b3nshi fecha: 07-08-2007 a las 01:40:34.
Responder Con Cita
  #2  
Antiguo 07-08-2007
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, yo recorro con un solo for, y segun alguna condición hago lo que necesito.

Código Delphi [-]
 for Ind:=0 to TreeView1.Items.Count-1 do
 begin
  case TreeView1.Items[Ind].Level of
  0://Nivel 0 (Dias)
  1://Nivel 1 (Turno)
  2://Nivel 2 (Actividades)
  end;
 end;


Saluditos, espero te sirva
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 07-08-2007
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
Hola,

El método que describe Caro puede ser más que suficiente y es muy sencillo. Aún así, dado que un archivo XML también es jerárquico, pudiera ser que te convenga más recorrer el árbol recursivamente:

1. Lees los nodos de primer nivel (días)
2. Por cada día, lees sus subnodos (turnos)
3. Por cada turno, lees sus subnodos (actividades)

Más o menos sería así:

Código Delphi [-]
var
  NodoDia: TTreeNode;

begin
  // Te colocas en el primer nodo del árbol
  NodoDia := TreeView1.Items.GetFirstNode();

  // Recorres los nodos de primer nivel (días)
  while Assigned(NodoDia) do
  begin
    (*
      Aquí trabajas con este día
    *)

    // Lees los turnos de este nodo
    LeerTurnos(NodoDia);

    // Avanzas al siguiente nodo del mismo nivel (dia)
    NodoDia := NodoDia.GetNextSibling();
  end;
end;

El método LeerTurnos trabaja con los subnodos del nodo (dia) que se le pase:

Código Delphi [-]
procedure LeerTurnos(NodoDia: TTreeNode);
var
  NodoTurno: TTreeNode;

begin
  // Te colocas en el primer subnodo (turno) de este dia
  NodoTurno := NodoDia.GetFirstChild();

  // Recorres los subnodos (turnos) de NodoDia
  while Assigned(NodoTurno) do
  begin
    (*
      Aquí trabajas con este turno
    *)

    // Lees las actividades de este nodo
    LeerActividades(NodoTurno);

    // Avanzas al siguiente nodo del mismo nivel (turno)
    NodoTurno:= NodoTurno.GetNextSibling();
  end;
end;

Finalmente, el método LeerActividades, trabaja con los subnodos del nodo (turno) que se le pase:

Código Delphi [-]
procedure LeerActividades(NodoTurno: TTreeNode);
var
  NodoActividad: TTreeNode;

begin
  // Te colocas en el primer subnodo (actividad) de este turno
  NodoActividad := NodoTurno.GetFirstChild();

  // Recorres los subnodos (actividades) de NodoTurno
  while Assigned(NodoActividad) do
  begin
    (*
      Aquí trabajas con esta actividad
    *)

    // Avanzas al siguiente nodo del mismo nivel (actividad)
    NodoActividad:= NodoActividad.GetNextSibling();
  end;
end;

// Saludos

Última edición por roman fecha: 07-08-2007 a las 06:35:28.
Responder Con Cita
  #4  
Antiguo 07-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Muchisimas Gracias a los dos por contestarme... en realidad creo q los dos metodos me ayudan para guardar en el archivo xml, uno con mas lineas de codigo q otro... pero en fin... muchisimas gracias a los dos... ya probé usando ambos y funcionan perfectos!...

Hasta la proxima!

{Saludos}
Responder Con Cita
  #5  
Antiguo 08-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Y ahora... una pregunta? Como hago para leer este xml?
Estuve viendo un poco de codigo pero muy claro no me queda...
No hay un items.count para los nodos dentro d un xml por loq no se como controlar esto...

Como haria para leer un archivo con la estructura como la que tengo arriba?

Muchas Gracias nuevamente!

{Saludos}
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
Como hago esto? multi thread?!?! MaMu OOP 7 16-04-2007 21:53:51
¿Como hago esto? IZO API de Windows 5 02-03-2007 20:37:38
Como hago esto en Delphi ? Markos1970 OOP 5 19-12-2005 15:40:29
como hago esto meosre MySQL 3 06-10-2005 17:14:09


La franja horaria es GMT +2. Ahora son las 06:53:55.


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