![]() |
![]() |
| Paypal | 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
|
|||
|
|||
|
Hola, ya lo tengo casi... Esto es lo que he hecho:
Variables necesarias:
Procedimiento para añadir items al TreeView:
Procedimiento OnExpand del TreeView1:
...y para llamar-lo:
Bueno, ahora el problema está en que me hace una excepción en algunos casos: "List index out of bounds (0)" en la línia: [i]if (ParentNode.Item.Text = AFolder.Name) then en el procedimient AddFiles. Como puedo arreglar esto, no sé porqué hace este error... |
|
#2
|
||||
|
||||
|
Cosas como estas:
En otro sitio te dirían que vale, que no pasa nada. Desde luego, creo que en estos foros buscamos la eficiencia y el buen hacer de las cosas. Es innecesario crear los items, y acto seguirlo eliminarlo porque salen repetidos. Deberás hacer algo al respecto. En mi opinion, puedes añadir a la rutina recursiva, un parámetro FullDeep:Boolean, si lo pones a true, busca todos los niveles de carpeta, si lo pones a false, solo busca el nombre de las carpetas de primer nivel. Esto último te sirve para representar los nodos iniciales en el TreeView (FullDeep:=false), despues en el OnExpand, solo haz de llamar a la misma rutina con FullDeep:= True. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#3
|
||||
|
||||
|
Función recursiva en un TreeView
Hey guys...somewhere I found a very good and effective algorithm you are trying I guess...
procedure DirectoryTree(Tree:TTreeView;Memo1:TMemo ; RootDirectory:string); var sr: TSearchRec; FileAttrs: Integer; theRootNode : tTreeNode; theNode : tTreeNode; procedure AddDirectories(theNode: tTreeNode; cPath: string); var sr: TSearchRec; FileAttrs: Integer; theNewNode : tTreeNode; begin FileAttrs := faAnyFile; //TSearchRec constant if FindFirst(cPath+'\*.*', FileAttrs, sr) = 0 then begin repeat if ((sr.Attr and FileAttrs) = sr.Attr) and (copy(sr.Name,1,1) <> '.') then begin theNewNode := Tree.Items.AddChild(theNode,sr.name); AddDirectories(theNewNode,cPath+'\'+sr.Name); end; until FindNext(sr) <> 0; FindClose(sr); end; end; begin FileAttrs := faAnyFile; //TSearchRec constant theRootNode := Tree.Items.AddFirst(nil,RootDirectory); if FindFirst(RootDirectory+'*.*', FileAttrs, sr) = 0 then begin theNode := Tree.Items.GetFirstNode; AddDirectories(theNode,RootDirectory+sr.Name); FindClose(sr); end; end; |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|