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 09-11-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Level máximo de un TreeNode

Buenas tardes,

Necesitaría alguna forma de calcular el nivel máximo que tiene un TreeNode. Todo surge porque necesito hacer una estructura jerárquica de máximo 4 niveles. Estos niveles se pueden mover de una rama a otra siempre con la restricción esta de los 4 niveles. El problema lo tengo en este caso que no sé calcular el nivel de ese subárbol que quiero mover porque posiblemente pueda tener a su vez más ramas.

Espero haberme explicado.

Muchas gracias a todos!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #2  
Antiguo 10-11-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.298
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cada TTreeNode tiene la propiedad Level; Revísala a ver si te da lo que necesitas.
En el peor de los casos tal vez deberás hacer un recorrido para quedarte con la más grande.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 10-11-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola Neftali,

Muchas gracias por tu respuesta. La verdad es que la propiedad esa ya la conocía y lo que me proporciona es el nivel de un nodo. Yo lo que necesitaba saber es es el máximo nivel de un árbol o subárbol. Podría recorrerlo entero y quedarme con el máximo, pero preguntaba por si hubiese alguna propiedad directa que me lo diera.

Gracias por tu aportación Neftali!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #4  
Antiguo 10-11-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
Cita:
Empezado por vejerf Ver Mensaje
Yo lo que necesitaba saber es es el máximo nivel de un árbol o subárbol. Podría recorrerlo entero y quedarme con el máximo, pero preguntaba por si hubiese alguna propiedad directa que me lo diera.
Hola vejerf, una propiedad directa que haga eso que yo sepa no hay, debes hacer el recorrido pero no todo el arbol solo de la rama que necesites. Lo que no entiendo es si quieres el nivel del ultimo hijo o que a partir de una rama selecionada saber cuantos niveles tiene hacia abajo.

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
  #5  
Antiguo 10-11-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 de nuevo, tendría que ser algo así mas o menos:

Código Delphi [-]
procedure TForm1.Nivel(Nodo: TTreeNode; var NivelMax: Integer);
var
  NodoAux: TTreeNode;
  i: Integer;
begin
  for i := 0 to Nodo.Count - 1 do
  begin
    NodoAux := Nodo.Item[i];
    if NodoAux.Level>NivelMax then
     NivelMax := NodoAux.Level;
 
    Nivel(NodoAux, NivelMax);
  end;
end;
............................
 
  NivelMax : Integer;
begin
  NivelMax := -1;
  Nivel(TreeView.Selected, NivelMax);
  showmessage(IntToStr(NivelMax-TreeView.Selected.Level+1));

Si no es eso, explica un poco mas.

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
  #6  
Antiguo 10-11-2009
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Puedes obtener el máximo level al momento de ir llenando el TreeList:

Código Delphi [-]
var
  MaxLevel: Integer;

begin
  // Cuando creas la forma donde está el TreeList
  MaxLevel := 0;
  // En donde agregas los nodos o un nodo nuevo:
  ANode := TreeList1.Items.AddChild(Parent, 'Texto');
  if MaxNode < ANode.Level then
    MaxNode := ANode.Level;
end;

De esta forma obtendrás el nivel máximo cada que agregues un nodo nuevo...


Saludos...
Responder Con Cita
  #7  
Antiguo 16-11-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Muchas gracias por vuestras respuestas, pero no es exactamente lo que busco por la forma de proceder.

Me explico un poco. Digamos que intento repartir una serie de recursos para ciertas actividades. Estas actividades serían los nodos principales de un TTreeView. Estos nodos los voy llenando con los recursos con la restricción de que el máximo nivel es 4 como ya he comentado.

Supongamos que finaliza una actividad y que estos recursos asociados los quiero distribuir en otra actividad guardando la jerarquía. Pues bien, lo que quiero es poder determinar en runtime si puedo moverlos a otra actividad porque me cumplan el requisito jerárquico.

En definitiva, lo que yo quiero no es determinar el nivel máximo del TreeView principal, sino de cualquiera del subárbol visto desde el nodo seleccionado (ufff).

Espero haberme explicado ...

Gracias!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #8  
Antiguo 16-11-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
Cita:
Empezado por vejerf Ver Mensaje
.............., sino de cualquiera del subárbol visto desde el nodo seleccionado.
Hola verjer, lo que explicas es lo que hace el codigo que te pase arriba, nos da el numero de niveles que tiene cualquier subarbol que selecciones.

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
  #9  
Antiguo 19-11-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Perdón

Hola de nuevo,

Caro tienes razón que el código que me diste hacía lo que yo pedía. La verdad es que lo vi la primera vez y me despistó un poco. Pero ya una vez probado vi que hacía lo que yo quería y ya adaptado a mi código funciona estupendamente.

Muchas gracias!!!
__________________
"Patientia et constantia taelecum"
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
Arrastre TreeNode falete24 OOP 5 30-01-2009 12:37:23
Problemas con TReeNode jmlifi Varios 4 10-08-2005 13:20:16
Máximo Usuarios jsanchez Firebird e Interbase 2 10-11-2004 12:47:23
(dbase) al crear indices tira el error: 'table level changed' orfeo Tablas planas 0 11-05-2004 19:00:49
Problema level 7 DBASE Firibiri Tablas planas 0 30-04-2004 19:30:05


La franja horaria es GMT +2. Ahora son las 01:28:28.


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