Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Pfad von Treeview bekommen (https://www.delphipraxis.net/101225-pfad-von-treeview-bekommen.html)

o0o 10. Okt 2007 08:02


Pfad von Treeview bekommen
 
hi leutz,...also hiermit zeige ich den inhalt eines verzeichnisses in einem treeview an:
Delphi-Quellcode:
 //listed alles im tree-view
procedure GetDirectories(Tree: TTreeView; Directory: string; Item: TTreeNode; IncludeFiles: Boolean);
var
  SearchRec: TSearchRec;
  ItemTemp: TTreeNode;
begin
  Tree.Items.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
          Item := Tree.Items.AddChild(Item, SearchRec.Name);
        ItemTemp := Item.Parent;
        GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
        Item := ItemTemp;
      end
      else if IncludeFiles then
        if SearchRec.Name[1] <> '.' then
          Tree.Items.AddChild(Item, SearchRec.Name);
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
  Tree.Items.EndUpdate;
end;


//zeigt die tree-list view an
procedure TForm1.Button1Click(Sender: TObject);
var
  Node: TTreeNode;
  Path: string;
  Dir: string;
begin
  Dir := combobox1.text;
  Screen.Cursor := crHourGlass;
  TreeView1.Items.BeginUpdate;
  try
    TreeView1.Items.Clear;
    GetDirectories(TreeView1, Dir, nil, True);
  finally
    Screen.Cursor := crDefault;
    TreeView1.Items.EndUpdate;
  end;
end;
ok das ganze klappt auch wunderbar,...nur moechte ich auch an den pfad kommen^^
also wenn ich zb unter c:\programme\info\ka_was.txt das element ka_was.txt im treeview makiere, dass ich dann speziell an den pfad komme^^...wichtig is halt nur dass ich an den pfad vom aktuell makierten komme und zb diesen in einem edit seperat anzeiegn koennte^^

thx fuer eure hilfe im vorraus und ich hoffe ihr versteht wie ich das meine,....bin erst seit 3mon an delphi und von daher nichso drauf wie einige andere hier:)

da o0o

[OT]ps... ehm geht euch das nich auf die eier wenn ich hier staendig mit meinen fragen nerve? ich mein ich schreib nich 2-3 threads im monat sondern die woche^^...interessiert mich nur mal wie ihr das so seht...

marabu 10. Okt 2007 08:58

Re: Pfad von Treeview bekommen
 
Moin,

ich habe ein paar Sachen umgestellt und etwas hinzugefügt. Schau mal wie weit du das ohne Kommentare durchdringen kannst.

Delphi-Quellcode:
procedure GetDirectories(
  Tree: TTreeView;
  Directory: string;
  Item: TTreeNode;
  IncludeFiles: Boolean
);
var
  SearchRec: TSearchRec;
  ItemTemp: TTreeNode;
begin
  Directory := IncludeTrailingPathDelimiter(Directory);
  if FindFirst(Directory + '*.*', faDirectory or faReadOnly or faArchive, SearchRec) = 0 then
  begin
    repeat
      if Pos(SearchRec.Name, '..') = 1 then
        Continue else
      if (SearchRec.Attr and faDirectory = faDirectory) then
        GetDirectories(
          Tree,
          Directory + SearchRec.Name,
          Tree.Items.AddChildObject(Item, SearchRec.Name, Pointer(1)),
          IncludeFiles
        ) else
      if IncludeFiles then
        Tree.Items.AddChild(Item, SearchRec.Name);
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
end;

function TreeNodePath(node: TTreeNode; delimiter: Char = PathDelim): string;
begin
  if Assigned(node)
    then Result := TreeNodePath(node.Parent, delimiter) + delimiter + node.Text
    else Result := '';
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  TreeView.Items.BeginUpdate;
  GetDirectories(TreeView, 'C:\Daten', nil, False);
  TreeView.Items.EndUpdate;
end;

procedure TDemoForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
  Caption := TreeNodePath(Node);
end;
Grüße vom marabu

o0o 10. Okt 2007 09:20

Re: Pfad von Treeview bekommen
 
big thx fuer deine hilfe:)

also ich hab die letzte procedure auf tform1 abgeaendert damit es bei mir passt...nur iwi gehts noch nich:
Delphi-Quellcode:
procedure TForm1.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
  Caption := TreeNodePath(Node);
end;
es kommt beim kompilieren immer ein error in dem steht dass TreeViewChange ein nicht definierter bezeichner ist 0_o

weisst du an was das haengt?^^ ich weiss nich weiter^^

o0o

Gehstock 10. Okt 2007 09:28

Re: Pfad von Treeview bekommen
 
Klick den Treeview an -> ObjectInspector oben auf Ereignisse-in der liste suchst du OnChange und machst n doppelklick drauf da trägst du dann


Delphi-Quellcode:
  Caption := TreeNodePath(Node);
ein
fertig

o0o 10. Okt 2007 09:50

Re: Pfad von Treeview bekommen
 
ach gott ich bin ja so verpeilt:D
stimmt ja hab ganz vergessen...naja thx euch beiden fuer die hilfe es klappt einwandfrei:)

da o0o


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 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