Hallo mit untenstehendem Code lese ich Ordner samt Dateien in ein Treeview ein.
Er funktioniert so lange, wie unter Windows in der Ordneransicht "Datinamenserweiterungen anzeigen" eingeschalten ist.
Werden die Dateinamen ausgeblendet werden Sie auch im Treeview nicht angezeigt.
Da der Code nicht von mir ist weiss ich auch nicht an welcher Stelle eine Änderung erfolgen sollte.
Vielleicht kann mir jemand von Euch helfen.
Gruß Drschubi
Delphi-Quellcode:
procedure AddIcon(ANode: TTreeNode; AImageList: TImageList; const AFileName: string);
var
FileInfo: SHFILEINFO;
Icon: TIcon;
begin
//Get The DisplayName
SHGetFileInfo(PChar(AFileName), 0, FileInfo,
SizeOf(FileInfo), SHGFI_DISPLAYNAME);
ANode.Text := FileInfo.szDisplayName;
//Get The Icon That Represents The File
SHGetFileInfo(PChar(AFileName), 0, FileInfo,
SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
// Create a temporary TIcon
Icon := TIcon.Create;
icon.Handle := FileInfo.hIcon;
ANode.ImageIndex := AImageList.AddIcon(Icon);
Icon.Free;
// Destroy the Icon
DestroyIcon(FileInfo.hIcon);
end;
procedure GetDirectories(Tree: TTreeView; Directory: string; Item: TTreeNode; IncludeFiles: Boolean);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
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
Item := Tree.Items.AddChild(Item, SearchRec.Name);
AddIcon(Item, Form1.ImageList1, Directory + SearchRec.Name);
end;
ItemTemp := Item.Parent;
GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
Item := ItemTemp;
end
else if IncludeFiles then
if SearchRec.Name[1] <> '.' then
begin
ItemTemp := Tree.Items.AddChild(Item, SearchRec.Name);
AddIcon(ItemTemp, Form1.ImageList1, Directory + SearchRec.Name);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Node: TTreeNode;
Path: string;
Dir: string;
begin
Dir := 'C:\dokuview\dokumente';
Screen.Cursor := crHourGlass;
TreeView1.Images := ImageList1;
TreeView1.Items.BeginUpdate;
try
TreeView1.Items.Clear;
GetDirectories(TreeView1, Dir, nil, True);
finally
Screen.Cursor := crDefault;
TreeView1.Items.EndUpdate;
end;
end;