Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Dateiname in TreeView einfügen

  Alt 26. Okt 2006, 22:43
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
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat