Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Activar/Desactivar hijos en TTreeView (https://www.clubdelphi.com/foros/showthread.php?t=30096)

mez 08-02-2006 18:50:02

Activar/Desactivar hijos en TTreeView
 
Hola a todos,
Estoy haciendo un menu vertical con TTreeView, pero dependiendo de algun parametro boolean debiera aparecer o no cierto hijo:

+Padre1
---Hijo1
---Hijo2
---Hijo3
+Padre2
---Hijo1
---Hijo2
---Hijo3
+Padre3

necesito que si la variable aparece:=FALSE entoces:
+Padre1
---Hijo1
---Hijo2
---Hijo3
+Padre3

desaparezca un nodo en particular (Padre2 y todos sus hijos),

alguien me puede ayudar?

gracias

MEZ

roman 08-02-2006 19:01:59

Quizá te sirva el evento OnExpanding del TreeView. Éste se lanzará justo antes de expandir un nodo y puedes aprovecharlo para ocultar al indeseable.

// Saludos

mez 08-02-2006 19:19:24

el OnExpanding esta Ok, pero como lo escondo??

dec 08-02-2006 22:05:47

Hola,

Tal vez algo así:

Código Delphi [-]
procedure TForm1.TreeView1Expanding(Sender: TObject;
  Node: TTreeNode; var AllowExpansion: Boolean);
begin
  if Node.Text = 'Nodo padre 2' then
    AllowExpansion := false;
end;

roman 08-02-2006 22:51:03

Mmm, no. Creo que estamos malentendiendo. No sé de dónde saque que la cuestión era al momento de expandir. Si no malentiendo, los nodos de un treeview no pueden ocultarse. Creo que más bien habrá que insertarlo o no dependiendo de la variable.

// Saludos

dec 08-02-2006 22:58:40

Hola,

Los nodos no parecen poder ocultarse, pero, ciertamente, en el evento que señalabas y que yo utilizé en el código de más arriba, puedes acceder al "Nodo" que va a expandirse. Para evitar su expansión basta con utilizar la variable "AllowExpansion" y ponerla en "false".

Creo que esto es mejor que "borrar" el nodo, que siempre puede hacerse, puesto que en el mismo evento encontramos la variable "Node", que representa al nodo que va a expandirse. Lo que ocurre es que si borras (Delete) el Nodo... no creo que el usuario se llevara una buena impresión.

Así pues, o bien el "TreeView" inserta ya los diferentes "Nodos" de forma condicional, esto es, en base a determinada condición, o si quiere utilizarse el evento "OnExpanding", puede optarse por evitar la expansión del "nodo" o por borrarlo, directamente. A ver qué tiene que decir al respecto mez. ;)

roman 08-02-2006 23:07:03

Como dije, veo que mez nunca habló de expansión, fue mi error. Si, por ejemplo, quiere que el nodo y su prole aparezcan o no al momento de mostrar la ventana con el árbol, pues el evento OnExpanding estaría de más, sería cosa simplemente de insertarlo o no. Claro que borrar el nodo al momento de intentar expandirlo sería "algo" confuso, más no era ésa la idea. En fin, ya mez podrá aclararnos más.

// Saludos


La franja horaria es GMT +2. Ahora son las 11:41:33.

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