Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2009
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Obtener el index de un Nodo

Hola, necesito conocer el index de un nodo:

+Nodo1
--- Hijo
--- Hijo2
+Nodo2 <--- Necesito conocer este identificador
--- Hijo
--- Hijo2

Lo que yo hago es lo siguiente, en el evento OnChange del TTreeView:

Código Delphi [-]
if node.Level = 1 then
      begin
          if node.Index = 0 then
            begin
              if node.GetPrev.Index = 1 then TthreadAlbumList.Create(Node.text);
              if node.GetPrev.Index = 2 then TthreadArtistList.Create(Node.text);
              if node.GetPrev.Index = 3 then TthreadStyleList.Create(Node.text);
              if node.GetPrev.Index = 4 then TthreadFolderList.Create(Node.text);
            end else
              begin
                   {Aquí necesito conocer el Index como antes, para ejecutar el repectivo thread, pero no encuentro la forma }

              end;

      end;

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 07-04-2009
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Alguien tiene alguna idea?

Saludos y gracias.
Responder Con Cita
  #3  
Antiguo 07-04-2009
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, no te sirve AbsoluteIndex, con eso él indice de tu nodo2 sería 3.

Código Delphi [-]
 Case Node.AbsoluteIndex Of
  0:;
  1:;
  2:;
  3://Nodo2;
  ..........
 end;

Saluditos
__________________
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
  #4  
Antiguo 07-04-2009
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Gracias por responder Caro, pero no me sirve, ya que no se puede prever el número de hijos que tendrá cada nodo, de esa forma el AbsolutIndex varía y lo que yo quiero es tener un valor fijo.

Saludos y gracias.
Responder Con Cita
  #5  
Antiguo 08-04-2009
Cristalero Cristalero is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Cristalero Va por buen camino
Nivel del nodo de un árbol

Lo puedes saber de la siguiente manera: pon en onchanged lo siguiente haber que tal:

showmessage(IntToStr(treeview1.Selected.Level));

treeview1 = nombre de tu árbol

Suerte, ya me dirás que tal.

Saludox!
Responder Con Cita
  #6  
Antiguo 08-04-2009
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Hola cristalero, gracias por responder pero si te fijas en el código ya uso la propiedad level del TreeView, pero no necesito obtener el nivel, sino el identificador de cada nodo "padre".

Con el código que puse, si seleccionamos un nodo hijo1, nos obtendría el index del padre y ejecutaría el respectivo Thread, pero si seleccionamos un hijo2 o 3 el código no funcionaría


Saludos y gracias.
Responder Con Cita
  #7  
Antiguo 08-04-2009
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Hola, gracias por vuestra ayuda, ya conseguí resolver el problema.


Código Delphi [-]
procedure TFMain.TreeViewChange(Sender: TObject; Node: TTreeNode);
var
str: TStringList;
i, u: integer;
s: string;
begin

  if node.level = 0 then
    begin
       if node.Index = 1 then
      begin
        Node.DeleteChildren;
        str:= dbEngine_GetAlbumList;
          for i := 0 to str.Count -1 do
            begin
               TreeView.Items.AddChild(node, str.Strings[i]);
            end;
      end;

    if node.Index = 2 then
      begin
        Node.DeleteChildren;
        str:= dbEngine_GetArtistList;
          for i := 0 to str.Count -1 do
            begin
               TreeView.Items.AddChild(node, str.Strings[i]);
            end;
      end;

    if node.Index = 3 then
      begin
        Node.DeleteChildren;
        str:= dbEngine_GetStyleList;
          for i := 0 to str.Count -1 do
            begin
               TreeView.Items.AddChild(node, str.Strings[i]);
            end;
      end;

    if node.Index = 4 then
      begin
        Node.DeleteChildren;
        str:= dbEngine_GetFolderList;
          for i := 0 to str.Count -1 do
            begin
               TreeView.Items.AddChild(node, str.Strings[i]);
            end;
      end;
    end;

    if node.Level = 1 then
      begin
          PlayList.Items.Clear;

          if node.Index = 0 then
            begin
              case Node.GetPrev.index of
                1: TthreadAlbumList.Create(Node.text);
                2: TthreadArtistList.Create(Node.text);
                3: TthreadStyleList.Create(Node.text);
                4: TthreadFolderList.Create(Node.text);
              end;
            end else
              begin
                  s:= node.text;
                  for u := node.index downto 0 do
                    begin
                      node:= node.GetPrev;
                    end;
                      case Node.Index of
                         1: TthreadAlbumList.Create(s);
                         2: TthreadArtistList.Create(s);
                         3: TthreadStyleList.Create(s);
                         4: TthreadFolderList.Create(s);
                      end;
              end;

      end;


end;

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Index is out of date... index table torito Conexión con bases de datos 7 10-12-2016 13:21:31
Recursividad. Obtener registros que sirven como nodo hoja. Gabo C++ Builder 1 07-11-2007 15:40:47
Obtener index actual en un TTreeView alessita Varios 2 28-01-2007 09:12:38
Obtener el item index en un TreeView zvf OOP 2 30-08-2006 01:55:09
Obtener un fichero adjunto a un nodo de un fichero XML muntasil Internet 0 18-07-2006 12:57:57


La franja horaria es GMT +2. Ahora son las 05:11:34.


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