Buenas,
tengo un código para copiar desde un TShellTreeView a un treeview que me está haciendo cosas bastante raras.
La idea es copiar los elementos seleccionados en el ShellTreeView al treeview, de modo que si se selecciona un archivo, se copie el archivo únicamente, y si se selecciona una carpeta, se copien todos los archivos y carpetas dentro de la misma de modo recursivo.
El código es el siguiente:
Código:
procedure TfrArbolSelec.FormCreate(Sender: TObject);
begin
FPrimerNodo := TVSeleccionados.Items.Add(nil,'Copia de seguridad');
end;
procedure TfrArbolSelec.BoAnadirClick(Sender: TObject);
begin
// si hay un nodo seleccionado
if STVArbol.Selected <> nil then
begin
STVArbol.Selected.Expand(false);
AnadirNodo(STVArbol.Selected,FPrimerNodo,'');
if not FPrimerNodo.Expanded then FPrimerNodo.Expand(false);
end;
end;
procedure TfrArbolSelec.AnadirNodo (Nodo:TTreeNode;Padre:TTreeNode;Path:String);
var
i :integer;
begin
Nodo.Expand(false);
if Nodo.HasChildren then // si es un directorio
begin
TVSeleccionados.Items.AddChild(Padre,Nodo.Text);
for i:= 0 to Nodo.Count-1 do
AnadirNodo(Nodo.Item[i],Nodo,Path + '\' + Nodo.Text);
end
else
begin
TVSeleccionados.Items.AddChild(Padre,Nodo.Text);
end;
Nodo.Collapse(false);
end;
El problema está en que al debugear, todo se copia como debe, sin embargo al volver a la aplicación, me encuentro con solo se ha copiado el primer item y el resto se ha duplicado en el árbol de origen, es decir, en el TShellTreeVIew
En la imagen se puede ver que los nombres de las carpetas dentro de "LP" se han duplicado dentro de la misma (con el icono de compartido
![Confused](http://www.clubdelphi.com/foros/images/smilies/confused.gif)
)
http://img392.imageshack.us/my.php?image=dellt6.jpg
¿Qué estoy haciendo mal??
Gracias