Ver Mensaje Individual
  #7  
Antiguo 24-12-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Reputación: 22
[Gunman] Va por buen camino
Hola, ya lo tengo casi... Esto es lo que he hecho:

Variables necesarias:
Código Delphi [-]
 var
   MainFrm: TMainFrm;
   CurrentDir, FirstPath: String;

Procedimiento para añadir items al TreeView:
Código Delphi [-]
 procedure AddFiles(const Folder: string; Nodes: TTreeNodes;
   ParentNode: TTreeNode);
 var
   AFolder: TSearchRec;
   NewNode: TTreeNode;
   i: Integer;
 begin
   if FindFirst(Folder + '*.*', faDirectory, AFolder) = 0 then
   repeat
     if (AFolder.Name <> '.') and (AFolder.Name <> '..') then
     begin
       if ParentNode <> nil then
       begin
         for i := 0 to ParentNode.Count-1 do
        [i] if (ParentNode.Item.Text = AFolder.Name) then
         begin
           ParentNode.Item[i].Delete;
         end;
       end;
       NewNode := Nodes.AddChild(ParentNode, AFolder.Name);
       AddFiles(IncludeTrailingPathDelimiter(Folder+AFolder.Name) +
                 '*.*', Nodes, NewNode);
     end;
   until FindNext(AFolder) <> 0;
   FindClose(AFolder);
 end;

Procedimiento OnExpand del TreeView1:
Código Delphi [-]
 procedure TMainFrm.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
   var AllowExpansion: Boolean);
 var
   i: Integer;
 begin
   CurrentDir := FirstPath;
   for i := Node.Level downto 0 do
   if i = 0 then
   CurrentDir := CurrentDir+Node.Text+'\'
   else
   CurrentDir := CurrentDir+Node.Parent.Text+'\';
   ShowMessage(CurrentDir);
   AddFiles(CurrentDir,TreeView1.Items,Node);
 end;

...y para llamar-lo:
Código Delphi [-]
 procedure TMainFrm.NewRegisterClick(Sender: TObject);
 begin
   TreeView1.Items.Clear;
   AddFiles('E:\Mis Documentos\Mis archivos recibidos\', TreeView1.Items, nil);
   FirstPath := ('E:\Mis Documentos\Mis archivos recibidos\');
 end;

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...
__________________
l2prog.co.nr
Responder Con Cita