Delphi-PRAXiS
Seite 2 von 2     12   

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 TreeView:einträge selbst speichern (https://www.delphipraxis.net/58256-treeview-eintraege-selbst-speichern.html)

mimi 4. Dez 2005 15:54

Re: TreeView:einträge selbst speichern
 
@tigerman33
nein es können/sollen auch mehre unterpunkte erzeugt werden als nur einen....
werde ich gleich mal testen !

@marabu
besten dank werde ich sorfort testen :-D

mimi 4. Dez 2005 16:02

Re: TreeView:einträge selbst speichern
 
@tigerman33
du hattes recht, im menue wird es richtig angezeigt in der Treeview leider nicht

@@marabu
kann ich leider noch nicht beurteieln, weil ich leider nicht weißt wie ich ihn aufrufen soll ich habe probiert:
Delphi-Quellcode:
  TreeNodePath(TreeView1.Items.GetFirstNode,'\');
aber anscheiend tut er so garnichts....

so bis später(eine woche :( muss leider wieder nach Hause)

marabu 4. Dez 2005 17:19

Re: TreeView:einträge selbst speichern
 
Hallo Michael,

der Aufruf ist schon nicht schlecht. Irgendwann musst du dann auch mal das Funktionsergebnis anschauen:

Delphi-Quellcode:
var
  s: string;
begin
  s := TreeNodePath(TreeView1.Items.GetFirstNode,'\');
  // ...
end;
Freundliche Grüße vom marabu

mimi 11. Dez 2005 07:17

Re: TreeView:einträge selbst speichern
 
Delphi-Quellcode:
Test1\1\x
Test1\2\c <-- der hier stirbt doch, oder?
und wie kann ich es ändern seit tagen versuche ich das Problem zu lösen bis jetzt leider ohne sichtbaren erfolg :( :( :(

mimi 11. Dez 2005 07:36

Re: TreeView:einträge selbst speichern
 
@marabu
besten dank hat funktioniert:
Delphi-Quellcode:

procedure TForm5.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   s:=TreeView1.GetNodeAt(x,y);
   TreeView1.Selected:=s;
   if s <> nil then
     Label2.Caption:=TreeNodePath(s,'\')
   else
     label2.Caption:='';
end;
Zum speichern und laden nutze ich einfach diese funktionen:
Delphi-Quellcode:
procedure LoadTreeFromFile(TreeView:TTReeView;FileName:TFileName);
var
  F: TFileStream;
begin
  F := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    F.ReadComponent(TreeView);
  finally
    F.Free;
  end;
end;

procedure SaveTreeToFile(TreeView:TTReeView;FileName:TFileName);
var
  F: TFileStream;
begin
  F := TFileStream.Create(FileName, fmCreate or fmShareCompat);
  try
    F.WriteComponent(TreeView);
  finally
    F.Free;
  end;
end;
von: http://www.swissdelphicenter.ch/

edit: ich glaube ich habe jetzt ein anders problem: und zwar beim meinem TMenuitem ! :oops:

F.W. 9. Feb 2006 22:28

Re: TreeView:einträge selbst speichern
 
Probier mal folgenden Code, den ich gerade geschrieben habe, da ich mich auch wieder damit auseinandersetzen musste :D

Der Code ist für Text-Dateien in der Form
Code:
C:\WINDOWS\system
C:\WINDOWS\system32
D:\Eigene Dateien\...
D:\Eigene Dateien\...\Eigene Bilder\...

...

Delphi-Quellcode:
//Zum Kopieren von einer Position bis zu einer anderen Position
function CopyFT(Eingabe: String; Von, Zu: Integer): String;
begin
 Result := Copy(Eingabe, Von, Zu-(Von-1) );
end;

//Um ein Glied eines Pfades zu bekommen
function GetPart(S: String; const Index: Integer): String;
var
 Len, P, C: Integer;
begin
 S := IncludeTrailingBackslash(S);
 Len := Length(S);

 P := 0;
 C := 0;

 repeat
   if C = Index then begin
      Result := CopyFT(S, P+1, PosEx('\', S, P+1)-1);
      Break;
   end;

   P := PosEx('\', S, P+1);
   Inc(C);
 until P = Len;
end;

//Um zu bestimmen wieviele Glieder ein Pfad besitzt
function PartsCount(S: String): Integer;
var
 Len, P: Integer;
begin
 S := IncludeTrailingBackslash(S);
 Len := Length(S);

 P := 0;
 Result := 0;

 repeat
   P := PosEx('\', S, P+1);
   Inc(Result);
 until P = Len;
end;

//Zum Laden einer Stringlist in ein TTreeView
procedure StringListToTree(var L: TStrings; var Tree: TTreeView);
var
 S, Part: String;
 X, N, I: Integer;
// X .. Zeile
// I .. Parts
// N .. Nodesuche
 Node: TTreeNode;
 Found: Boolean;
begin
 Tree.Items.Clear;
 Tree.Items.Add(NIL, 'START');

 for X := 0 to L.Count-1 do begin
     Node := Tree.Items[0];
     S := L[X];

     for I := 0 to PartsCount(S)-1 do begin
         Part := GetPart(S, I);
         Found := False;

         for N := 0 to Node.Count-1 do begin
             if Node[N].Text = Part then begin
                Node := Node[N];
                Found := True;
                Break;
             end;
         end;

         if not Found then begin
            Node := Tree.Items.AddChild(Node, Part);
         end;
     end;
 end;
end;

mimi 12. Feb 2006 08:52

Re: TreeView:einträge selbst speichern
 
Besten dank, werde ich bei einer gelentheit mal ausprobieren *G*


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.
Seite 2 von 2     12   

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