Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con TreeView (https://www.clubdelphi.com/foros/showthread.php?t=63343)

xmalmorthen 10-02-2009 06:11:50

Ayuda con TreeView
 
Hola, que tal compañeros, antes que nada saludos y recurro a toda la comunidad para exponerles mi necesidad... estoy trabajando con un sistema en el cual tengo dos treeviews pintados en un formulario, uno de ellos contiene la estructura tomada de un tmainmenu por medio del caption es decir, lo que muestra el treeview son las etiquetas del menu, mientras que el otro treeview muestra la propiedad name de los items del tmainmenu, los 2 treeviews tienen la misma estructura de ramas y hojas.... entonces lo que intento hacer es de que cuando se selecciona un item en el treeview que muestra los captions, se haga la seleccion exactamente en el mismo item pero en el otro treeview que muestra la propiedad name... aclaro que los dos treeviews tienen la misma estructura solo que pintan diferentes textos..... espero me puedan ayudar, de antemano muchas gracias...

Neftali [Germán.Estévez] 10-02-2009 10:22:32

Se supone que al item seleccionado en el primer TTreeview podrás acceder por la propiedad Selected de este. Una vez tengas el TreeNode puedes acceder a la propiedad AbsoluteIndex de ese elemento en el primer TreeView.
Buscar en el segundo TreView el nodo que corresponda a ese AbsoluteIndex deberías ser sencillo (revisa a ver si hay método directo o hay que hacerlo de forma secuencial).

Otra opción, posiblemente más eficiente y si eres tú el que construye los TreeViews, es que "enganches" o "unas" las parejas de nodos de ambos TreeView en el momento en que los construyes; Por ejemplo, utilizando la propiedad Data de cada nodo del primeer TreeView, almacenas un apuntador al nodo correspondiente del segundo. De esta forma acceder al nodo correspondiente del segunddo TreeView sería directo.
No se si me expliqué bien... :o

Un saludo.

Caro 10-02-2009 13:40:39

Cita:

Empezado por Neftali (Mensaje 337640)
Se supone que al item seleccionado en el primer TTreeview podrás acceder por la propiedad Selected de este. Una vez tengas el TreeNode puedes acceder a la propiedad AbsoluteIndex de ese elemento en el primer TreeView.
Buscar en el segundo TreView el nodo que corresponda a ese AbsoluteIndex deberías ser sencillo (revisa a ver si hay método directo o hay que hacerlo de forma secuencial).

Holitas, sobre la primera forma que te indica Neftali, tendría que ser algo así:

Código Delphi [-]
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
 TreeView2.Items.Item[TreeView1.Selected.AbsoluteIndex].Selected := True;
end;

y para que el segundo TreeView se muestre siempre seleccionado:

Código Delphi [-]
 TreeView2.hideselection := False;

Cita:

Empezado por Neftali (Mensaje 337640)
Otra opción, posiblemente más eficiente y si eres tú el que construye los TreeViews, es que "enganches" o "unas" las parejas de nodos de ambos TreeView en el momento en que los construyes; Por ejemplo, utilizando la propiedad Data de cada nodo del primeer TreeView, almacenas un apuntador al nodo correspondiente del segundo. De esta forma acceder al nodo correspondiente del segunddo TreeView sería directo.
No se si me expliqué bien... :o

Amiguito la segunda forma no he entendido :confused:.

Saluditos

Neftali [Germán.Estévez] 10-02-2009 14:37:26

1 Archivos Adjunto(s)
Cita:

Empezado por Caro (Mensaje 337653)
Amiguito la segunda forma no he entendido

Bueno se trata de que cada nodo del primero está unido al del segundo.
En este caso, y por lo que hay que hacer tal vez no salga a cuenta, pero para otros tal vez simplefique las cosas.

De esa forma para sincronizar la seleccion de ambos simplemente basta con esto:

Código Delphi [-]
// en el Selected del primero
TTreeNode(Node.Data).Selected := True;

Con un ejemplillo, tal vez se vea más claro.

Caro 10-02-2009 15:00:36

Cita:

Empezado por Neftali (Mensaje 337659)

Código Delphi [-]
// en el Selected del primero
TTreeNode(Node.Data).Selected := True;





Con un ejemplillo, tal vez se vea más claro.

Muchas gracias por el ejemplo Neftali ahora si me ha quedado claro, lo que he visto es que no siempre te apuntaba al indice correspondiente en el TreeView2, solo he cambiado esa línea de codigo al evento OnChange y todo bien.

Saluditos

xmalmorthen 10-02-2009 16:18:31

Gracias...!!!
 
muchas gracias por las respuestas, me sirvieron perfektamente.... ahhh y gracias por las prontas aportaciones...!!!


La franja horaria es GMT +2. Ahora son las 22:07: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