如何实现树形目录,如同WINDOWS资源管理器一样?

解决方案 »

  1.   

    procedure DirToTreeView(ATreeView: TTreeView; ADirectory: string;
      ARoot: TTreeNode; AIncludeFiles: Boolean);
    var
      SearchRec : TSearchRec;
      ItemTemp : TTreeNode;
    begin
      with ATreeView.Items do
      try
        BeginUpdate;
        if ADirectory[Length(ADirectory)] <> '\' then
          ADirectory := ADirectory +'\';
        if FindFirst(ADirectory + '*.*', faDirectory, SearchRec) = 0 then
        begin
          repeat
          if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
          begin
            if (SearchRec.Attr and faDirectory > 0) then
              ARoot := AddChild(ARoot, SearchRec.Name);
            ItemTemp := ARoot.Parent;
            DirToTreeView(ATreeView, ADirectory + SearchRec.Name, ARoot, AIncludeFiles);
            ARoot := ItemTemp;
          end
          else if AIncludeFiles then
            if SearchRec.Name[1] <> '.' then
              AddChild(ARoot, SearchRec.Name);
          until FindNext(SearchRec) <> 0;
          FindClose(SearchRec);
        end;
      finally
        EndUpdate;
      end;
    end;