Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-09-2008
harpo harpo is offline
Miembro
 
Registrado: jul 2006
Posts: 35
Poder: 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
  #2  
Antiguo 20-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, creo que el problema te viene porque 'padre' es un nodo del treeview de origen, y estas añadiendo childs a el.

EDITO : un segundo, que miro de nuevo
Responder Con Cita
  #3  
Antiguo 20-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
si, si no me equivoco...
la primera vez que se llama a añadirnodo, 'nodo' pertenece a stvarbol y 'padre' a TVSeleccionados, mientras que en las sucesivas llamadas, tanto 'nodo' como 'padre' pertenecen a stvarbol, aunque hagas luego el addchild desde tvseleccionados. creo que van por alla los tiros. saludos y a ver si te sirve.
Responder Con Cita
  #4  
Antiguo 20-09-2008
harpo harpo is offline
Miembro
 
Registrado: jul 2006
Posts: 35
Poder: 0
harpo Va por buen camino
Tienes toda la razón.

Queda así:

Código:
procedure TfrArbolSelec.AnadirNodo (Nodo:TTreeNode;Padre:TTreeNode;Path:String);
var
  i        :integer;
  NodoPadre:TTreeNode;
begin
    Nodo.Expand(false);

    if Nodo.HasChildren then // si es un directorio
    begin
      NodoPadre := TVSeleccionados.Items.AddChild(Padre,Nodo.Text);
      for i:= 0 to Nodo.Count-1 do
        AnadirNodo(Nodo.Item[i],NodoPadre,Path + '\' + Nodo.Text);
    end
    else
    begin
      TVSeleccionados.Items.AddChild(Padre,Nodo.Text);
    end;

    Nodo.Collapse(false);
end;
Muchas Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con TreeView CFPA86 Varios 1 09-03-2007 22:20:57
Como instalar tshellTreeView k_rito API de Windows 8 01-02-2007 22:40:51
Problema copiando Archivo de BD en Paradox... T.T Vinicio Varios 8 18-07-2006 01:26:48
acerca del componente TShellTreeView fer21unmsm Varios 6 28-01-2006 18:30:34
Problema copiando Aplicacion en Delphi 4 throtmax Conexión con bases de datos 1 09-02-2004 14:47:24


La franja horaria es GMT +2. Ahora son las 19:53:14.


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
Copyright 1996-2007 Club Delphi