Ver Mensaje Individual
  #1  
Antiguo 19-09-2008
harpo harpo is offline
Miembro
 
Registrado: jul 2006
Posts: 35
Reputación: 0
harpo Va por buen camino
Problema copiando de un TShellTreeView a un Treeview

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 )

http://img392.imageshack.us/my.php?image=dellt6.jpg

¿Qué estoy haciendo mal??

Gracias

Última edición por harpo fecha: 19-09-2008 a las 22:23:24.
Responder Con Cita