AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Fehler bei abgeschaltener Dateinamenserweiterung
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei abgeschaltener Dateinamenserweiterung

Ein Thema von drschubi · begonnen am 17. Sep 2005 · letzter Beitrag vom 18. Sep 2005
Antwort Antwort
drschubi

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

Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 17. Sep 2005, 20: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
Benutzerbild von Nighthawk1310
Nighthawk1310

Registriert seit: 22. Feb 2004
Ort: Izmir / Türkei
45 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 17. Sep 2005, 21:09
Benutze lieber nicht FileInfo.szDisplayName, da er sonst bei Dir
so angezeigt wird wie im Eplorer.

Nimm für die Dateinamen-Anzeige die Variable AFileName und extrahiere
dann einfach den Dateinamen der Datei.

So ist es dann unabhängig von den Einstellungen im Explorer.
Michael
  Mit Zitat antworten Zitat
drschubi

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

Re: Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 17. Sep 2005, 21:26
Danke,

ich habe es jetzt so gemacht.
Die Erweiterung ist jetzt wieder da.
Wie bekomme ich den Pfad aus AFileName raus, die Delphi Hilfegibt dazu nix her?



Danke DrSchubi

Delphi-Quellcode:
rocedure 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;
   ANode.Text := AFileName;
  //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;
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#4

Re: Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 17. Sep 2005, 21:58
Guck mal nach einer Funktion namens [oh]ExtractFileName();[/oh]
  Mit Zitat antworten Zitat
drschubi

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

Re: Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 18. Sep 2005, 09:13
Danke ,

ExtractFileName, wäre ich nie draufgekommen, hätte mühselig mit Stringbearbeitung angefangen.
Funktioniert jetzt bestens.
Vielen Dank an alle
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 18. Sep 2005, 12:07
Moin Drschubi,

Du solltest noch

(SearchRec.Name[1] <> '.') durch

(Search.Name <> '.') and (Search.Name <> '..') austauschen, denn ein Datei-/Verzeichnisname kann auch mit . beginnen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
drschubi

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

Re: Fehler bei abgeschaltener Dateinamenserweiterung

  Alt 18. Sep 2005, 14:21
Danke schön, habe ich berücksichtigt. Man lernt nie aus.

Schönen Sonntag noch

Drschubi
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz