В VirtualStringTree нужно загрузить, из определенной папки, все имена папок и их подпапок а также оформить это в виде дерева (как в Explorer-e). Код я правда переделал (был для TreeView) под VirtualStringTree. В результате, количество папок и их вложенных папок показывается правильно, но вместо их имен, в списке отображается - Node.
| Код | type PLinksCollector = ^TLinksCollector; TLinksCollector = record Category: string; count: integer; end;
procedure TForm1.FormCreate(Sender: TObject); begin VT1.NodeDataSize := SizeOf(TLinksCollector); end;
procedure TForm1.GetDirectoriesVT(VT: TVirtualStringTree; Directory: string; node: PVirtualNode); var SearchRec: TSearchRec; NewNode: PVirtualNode; NewDate: PLinksCollector; begin VT.BeginUpdate; if Directory[Length(Directory)] <> '\' then Directory := Directory + '\'; if FindFirst(Directory + '*.*', 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 begin node := VT.AddChild(node, nil); NewDate := VT.GetNodeData(node); if Assigned(NewDate) then with NewDate^ do begin Category:=SearchRec.Name; end; end; NewNode := node.Parent; GetDirectoriesVT(VT, Directory + SearchRec.Name, node); node := NewNode; end; until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; VT.EndUpdate; end;
procedure TForm1.Button1Click(Sender: TObject); var Dir: string; begin Dir := 'D:\Install'; GetDirectoriesvt(vt1, Dir, nil); end;
|
Где я ошибся? |