procedure TreeNodeToMemo(Item: TTreeNode; Memo: TMemo; Path: string);
var
i: Integer;
begin
Path := Path + '' + Item.Text;
Memo.Lines.Add(Path);
if Item.Count > 0 then
for i:=0 to Item.Count - 1 do
TreeNodeToMemo(Item.Item[i], Memo, Path);
end;
TreeToMemo(ShellTreeView1.Items[0], Memo1, '');
Niestety (w tym przypadku) itemy w ShellListView są tworzone dynamicznie podczas rozwijania ich (drzewo nie jest tworzone w całości od razu) więc do memo zostanie dodane tylko to co jest widoczne (rozwinięte). Ale dla TreeView jest to dobra procka.
A szukanie z podkatalogami wygląda tak:
procedure ZnajdzPliki(Path: String);
var
Jest: Integer;
SR: TSearchRec;
begin
if Path[Length(Path)] <> '' then Path := Path +'';
Jest := FindFirst(Path + '*.*', faAnyFile, SR);
while Jest = 0 do
begin
if (SR.Name <> '.') and (SR.Name <> '..') then
if (SR.Attr and FILE_ATTRIBUTE_DIRECTORY) <> 0 then
ZnajdzPliki(Path + SR.Name)
else
begin
//pełna nazwa pliku: Path + SR.Name np:
Form1.Memo1.Lines.Add(Path + SR.Name);
end;
Jest := FindNext(SR);
end;
FindClose(SR);
end;