PDA

Ver la Versión Completa : Localizar nodo en un arbol


bbjb
10-12-2004, 12:40:24
hola,

Tengo un treeview cargado y sin expandir, y quiero buscar un nodo, posicionarme sobre él y expandir el arbol, pero expandirlo sólo sobre esa rama, es decir no quiero que se me expanda todos los niveles del árbol sino sólo aquel que tengo seleccionado.

He buscado en los foros de delphi y he encontrado un hilo donde explicaban el siguiente procedimiento.

var
i:Integer;
n:TTreeNode;
begin
// Recorrer los nodos del árbol
for i:=0 to (TreeView1.Items.Count - 1) do begin
// Lo ha encontrado?
if (TreeView1.items[i].Text = 'NomdeDeMiNodo') then begin
n := TreeView1.items[i];
// Expandir
n.Expand(True);
// Seleccionar
n.Selected := True;
// Pasar el foco al tree
TreeView1.RowSelect := True;
TreeView1.SetFocus;
end;
end;

Lo he seguido a rajatabla y el árbol no se expande, queda contraido y cuando empiezo a abrirlo veo como si se situa en el nodo buscado, pero para visualizarlo tengo que ir abriendo yo los niveles superiores de este

¿Hay algún fallo en el código o es el comportamiento normal????.

roman
10-12-2004, 17:08:02
Prueba este método:


var
Nodo: TTreeNode;
I: Integer;

begin
for I := 0 to TreeView1.Items.Count - 1 do
begin
Nodo := TreeView1.Items[I];

if Nodo.Text = 'Mi nodo' then
begin
Nodo.Selected := true;
Nodo.MakeVisible;

break;
end;
end;
end;


// Saludos