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 Dateiname in TreeView einfügen (https://www.delphipraxis.net/79713-dateiname-treeview-einfuegen.html)

mimi 26. Okt 2006 21:43


Dateiname in TreeView einfügen
 
Hallo,
seit einigen stunden versuche ich eine procedure/function zu entwickeln die folgendes tut:

- ich rufe sie mit einem Dateinamen und der jeweiligen VirtualTreeView auf.
dann soll es den dateinamen per GetToken zerlegen z.b. aus:
D:\test1\datei1\hall.txt
wird D:, Test1, Datei1 und so weiter.

er soll nur hinzufügen wenn das aktuelle verzeichnis noch nicht gibt ansonten muss er es da hinzufügen wo er eins gefunden hat.

hier ist mein qullcode dort wird leider alles doppelt angezeigt:
Delphi-Quellcode:
function AddToLT(lt:TVirtualStringTree; DateiNamen:String):PVirtualNode;
function IndexOF(str:String;Node:PVirtualNode;Index:Integer):PVirtualNode;
var
  r,t:Boolean;
  FileItem:PFileItem;
  temp:PVirtualNode;
begin
  r:=True; t:=False; temp:=niL;
  if index > 1 then begin
    if node = nil then Node:=lt.GetFirst;
    if node <> NIL then temp:=node;
  end
  else begin
    Node:=lt.RootNode;
    if node <> NIL then temp:=node;

  end;


  if (Node <> NIL) then begin
    while r = true do begin
      if lt.GetNodeLevel(node) > 1 then
        node:=lt.GetNext(node);

      if node <> NIL then begin
        FileItem:=lt.GetNodeData(node);

        if UpperCase(FileItem.Caption) = UpperCase(str) then begin
          r:=False;
          t:=True;
        end;
      end
      else begin
        r:=False;
        t:=false;
      end;
    end;
  end;
  if t = false then
    result:=temp
  else
    result:=node;
end;

var
  i:Integer;
  str:String;
  FileItem:PFileItem;
  Node:PVirtualNode;
begin
  result:=NIL; node:=NIL;

  for i:=1 to NumToken(Dateinamen,'\') do begin
    str:=GetToken(Dateinamen,'\',i);
    node:=IndexOF(str,node,i);

      result:=lt.AddChild(node);

      lt.ValidateNode(result,False);

      FileItem:=lt.GetNodeData(result);
      FileItem.Caption:=str;
      node:=result;
//    end;
  end;
end;
mein ziel ist es:
ich habe jetzt zwei dateinamen:
Zitat:

D:\test1\hallo\wie geht es\hall1.txt
D:\test1\hallo\hall1.txt
in der liste soll es anschließen so aussehen:
D:
test1
hallo
wie geht es dir
und nicht so :
D:
test1
hallo
wie geht es dir
hallo


im moment gibt es eine av ich weiß leider nicht warum und davor gab es halt diesen fehler den ich oben beschrieben hat... ich hoffe mir kann jemmand weiter helfen.

zum hintergrund:
ich möchte eine datei liste zu einer DB hinzufügen. und die ansicht soll so sein wie im datei explorer von windows lings eine listTree und rechts eine TreeView.
ich habe mir das so vorgestellt:

ich nehme mir die dateien die hinzugefügt werden soll einzelen vor füge sie in die TreeView ein bzw. dort sollen nur die verzeichnise stehen.

ich klicke eins der verzeichnise an muss ich alle Dateien aus der DB lesen die zum verzeichnis gehöhren und in der listView dastellen...
das dürfte kein problem werden.

in der DB steht dann eine Dateiliste wie z.b.:
D:\Test1\hallo1\60812.txt
D:\Test1\hallo1\111.txt
D:\Test111\hallo1\622212.txt
D:\Test1\hallo2\60000812.txt
D:\hallo.txt
und aus dieser liste möchte ich halt nacher diesen baum erzeugen darum die funktion die ich versuche zu entwickeln.. ich hoffe ihr versteht das prinzip und könnt mir weiter helfen. ich weiß einfach nicht mehr weiter.

ich hatte in der DF noch einen qullcode gefunden von jemmand der hat der möchte auch ein baum dastellen aber in einem MAINMENU:
http://www.delphi-forum.de/viewtopic...highlight=menu

Lannes 26. Okt 2006 22:51

Re: Dateiname in TreeView einfügen
 
Hallo,

im DF gibt es noch mehr, eventuell ist es das was Du suchst:
[TTreeView, VCL Win32] ...Node-Pfad (String) ins TreeView einfügen/TreeView füllen?

//Nachtrag: Etwas ähnliches gibt es auch in der Code-Library hier in der DP, man kann aber die Einfügeposition nicht vorgeben:
TTreeView-Node-Bäume schnell anlegen

mimi 27. Okt 2006 01:34

Re: Dateiname in TreeView einfügen
 
vielen dank werde ich mir morgen gleich mal anschauen !


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz