![]() |
TreeView in Memo abbilden!
Die Funktion bildet eine ganze TTreeView in einem TMemo ab, oder nur die gewünschte Anzahl Ebenen.
Der Aufruf ist dementsprechend einfach:
Delphi-Quellcode:
Der Parameter "Layers" ist optional. Wird er nicht mitgegeben, oder -1 übergeben, dann
// Stellt die ersten 3 Ebenen des TreeView1 in Memo1 dar.
ForceTreeToMemo(TreeView1, Memo1.Lines, 3); wird die gesamte TreeView mit sämtlichen Unterknoten dargestellt.
Delphi-Quellcode:
Viel Spass damit!
procedure TForm1.ForceTreeToList(Tree:TTreeView; Lines:TStrings; Layers:Integer=-1);
const // Verschiedene Zeichen für die Darstellung definieren strSpace1 : String = '| '; strSpace2 : String = ' + - '; strSpace3 : String = ' '; strSpace4 : String = ' - '; procedure ForceChilds(fNode:TTreeNode; strSpace:String; fLayer:Integer); var fChild:TTreeNode; begin // Für jeden Knoten und dessen Unterknoten wird ein Eintrag in // die Liste geschrieben. Um dies rekursiv zu machen, ruft sich die // Funktion selber wieder auf wenn ein weiterer Knoten mit Unterknoten // gefunden wurde. Aber immer nur solange bis die Anzahl Layers erreicht // wurde. if (assigned(fNode)) and ((fLayer < Layers) or (Layers = -1)) then begin Inc(fLayer); if (fNode.HasChildren) then begin // Schreibt in die Liste mit dem entsprechenden "grafischen" prefix Lines.Add(strSpace + strSpace2 + fNode.Text); strSpace := strSpace + strSpace3; fChild:=fNode.getFirstChild; repeat ForceChilds(fChild,strSpace,fLayer); fChild:=fChild.getNextSibling; until not assigned(fChild); end else // Schreibt in die Liste mit dem entsprechenden "grafischen" prefix Lines.Add(strSpace + strSpace4 + fNode.Text); end; end; var Node: TTreeNode; begin // Für die Hauptknoten wird jeweils die Funktion ForceChilds aufgerufen. with tree.Items do begin BeginUpdate; Node := GetFirstNode; while Assigned(node) do begin ForceChilds(Node,strSpace1,0); Node := Node.getNextSibling; end; EndUpdate; end; end; Liebe Grüsse #enemyleft [EDIT]Habe den Funktionsparameter Memo in TStrings geändert. Danke shmia[/EDIT] |
Re: TreeView in Memo abbilden!
Ersetze doch noch den Parameter Memo:TMemo durch Lines:TStrings.
Durch diese Verallgemeinerung kann man z.B. Folgendes tun:
Delphi-Quellcode:
Wenn man ein TreeView in ein Memo abbilden möchte, dann wäre der Aufruf:
var
liste : TStrings; begin liste := TStringList.Create; try ForceTreeToMemo(TreeView1, liste, 5); liste.SaveToFile(dateiname_treeview); // Speichern ohne Umweg über TMemo finally liste.Free; end; end;
Delphi-Quellcode:
ForceTreeToMemo(TreeView1, Memo1.Lines, 3);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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