FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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; 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. |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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; |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|