Einzelnen Beitrag anzeigen

drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#1

Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 17. Sep 2005, 21:56
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;
  Mit Zitat antworten Zitat