FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
TreeView
Holas
Si seleciono un item de un TreeView se podria saber a que nivel pertenece, me podrian indicar como se haria por favor, gracias por adelantado. -Opcion1 ->nivel1 ----Opcion11 ->nivel2 ----Opcion12 ->nivel2 -------Opcion121 ->nivel3 -------Opcion121 ->nivel3 Saludos y que tengan un bonito dia |
#2
|
|||
|
|||
Buenas,
No sé si es realmente lo que buscás, pero existe en ese componente la propiedad AbsoluteIndex propia del nodo que te especifica la posición absoluta dentro del tree. Gracias por lo de bonito día, eso a pesar de estar dentro de una oficina
__________________
Suerte .: Gydba :. |
#3
|
||||
|
||||
Cita:
// Saludos |
#4
|
||||
|
||||
Tambien puedes crearte un simple bucle, ahora no recuerdo si hay una propiedad para ello:
saludos |
#5
|
||||
|
||||
Salvo por una línea casi te sale igual al de la VCL
// Saludos |
#7
|
||||
|
||||
¡Pero basta poner nivel:=TreeView.Selected.Level!
// Saludos |
#8
|
||||
|
||||
Holas de nuevo,
Estuve probando el codigo que me pusiste Roman, pero me sale un error Incompatible types TTreeNode and TWinControl
|
#9
|
||||
|
||||
Me pacere mucho mejor como dices Roman
nivel:=TreeView.Selected.Level Gracias de nuevo, pero aun me gustaria saber como funciona la funciòn que pusiste no la entiendo y como te dije arriba me marca un error. Última edición por Caro fecha: 11-10-2005 a las 19:10:55. |
#10
|
||||
|
||||
Hay en mi tierra un dicho que dice: ¿Para qué tanto brinco estando el suelo tan parejo?
La propiedad que quieres es Level, no le des más vueltas. AbsoluteIndex es el índice que el nodo tiene en el arreglo de nodos del TreeView sin contar indentación. Entonces TreeView.Selected.AbsoluteIndex es el índice del nodo TreeView.Selected en el arreglo TreeView.Items. Por tanto TreeView.Items[TreeView.Selected.AbsoluteIndex] es lo mismo que TreeView.Selected y, por ende, innecesario. El código que puse antes no te compila porque está fuera de contexto. Se trata del código del método GetLevel (para la propiedad Level) que forma parte del código de la clase TTreeNode donde Parent es otra cosa. Si tu pones ese código como parte de tu formulario, entonces Parent es otra cosa. // Saludos |
#11
|
||||
|
||||
Cita:
Mi padre es carpintero, se dedica a construir mesas, tu padre es albañil, se dedica a construir casas, la función DileaTuPadreQueMeHagaUnaMesa trabaja bien conmigo, pero no servirá contigo, a pesar que también tienes un padre. Espero haberme explicado Saludos
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo Última edición por yusnerqui fecha: 11-10-2005 a las 22:15:17. |
#12
|
|||
|
|||
Cita:
|
#13
|
||||
|
||||
Bueno, bueno, relanjense, ese código lo escribí yo (no roman) y no lo probé con delphi
He eliminado la linea del error, ya que tampoco hace falta. Lo que hace, ya que estas interesado en saberlo, (cosa que me parece muyyyy bien) es: - Primero verificamos que el nodo no es nil, si es nil significa que no tiene nodo padre (es un nodo root), por tanto salimos de la funcion devolviendo cero. - Si tiene al menos un nivel de profundidad, entonces entra en el bucle, y va sumando 1; además buscamos el nodo padre del nodo que tenemos actualmente. Le paso un nodo por valor a la función, y dentro de la función lo modifico a voluntad (podría crear una variable temporal, pero de esta forma la ahorro). Tambien tiene inconvenientes, ya que el Nodo pasado por parámetro es un Objeto, y entonces se está pasando por referencia, así que si hacemos algo como esto: Porque dentro de la función hemos modificado el nodo. Si, se ha pasado por valor (no debería modificarse), pero nodo desciende de TObject, por tanto, se le pasa a la función un puntero, que si se modifica. Así que la función correcta sería:
saludos, y por supuesto es node.Level lo que necesitas . |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|