![]() |
Treeview kopieren
Hallo,
Ich suche verzweifelt nach einer einfache Möglichkeit ein Treeview automatisch in einem anderen Treeview zu aktualisieren : Beispiel MeinTreeview | + ShellTreeview | + DBTreeview Beide Treeview (ShellTreeview und DBTreeview) bleiben versteckt, aber wenn sich was tut, soll es in MeinTreeview so einfach wie nur möglich aktualisiert werden (inkl. Images... wenn schon :lol: ) Hat jemand 'ne Idee ? |
Re: Treeview kopieren
Delphi-Quellcode:
TreeView2.items.Assign(TreeView1.Items);
If Assigned(TreeView1.Images) then TreeView2.Images := TreeView1.Images; If Assigned(TreeView1.StateImages) then TreeView2.StateImages :=TreeView1.StateImages; |
Re: Treeview kopieren
Hab' mich vielleicht falsch ausgedrückt :
Die 2 TVs sind bestandteil von der eine. Meine Root --- 1. Node = Root von TV1 --- 2. Node = Root von TV2 --- 3. Node = Root von TV3 |
Re: Treeview kopieren
Na, dann so in etwa:
Delphi-Quellcode:
In dem Fall ist TreeView1 einer der versteckten TVs und TreeView2 ist derjenige, der die Untereinträge bekommt.
procedure AssignChildren(Source, Dest : TTreeNode);
var subtn : TTreeNode; i : integer; begin Dest.DeleteChildren; for i := 0 to (Source.Count-1) do If (Source.Item[i].Parent = Source) then begin subtn := TTreeView(Dest.TreeView).Items.AddChild(Dest, ''); subtn.Assign(Source.Item[i]); If Source.Item[i].HasChildren then AssignChildren(Source.Item[i], subtn); end; end; procedure TForm1.Button1Click(Sender: TObject); var i : integer; tn : TTreeNode; begin for i := 0 to (TreeView1.Items.Count-1) do begin If TreeView1.Items[i].Parent = nil then begin tn := TreeView2.items.AddChild(TreeView2.items[0], ''); with tn do begin Assign(TreeView1.Items[i]); If TreeView1.Items[i].HasChildren then AssignChildren(TreeView1.Items[i], tn); end; end; end; If Assigned(TreeView1.Images) then begin If not Assigned(TreeView2.Images) then TreeView2.Images := TImageList.Create(nil); TreeView2.Images.AddImages(TreeView1.Images); end; If Assigned(TreeView1.StateImages) then begin If not Assigned(TreeView2.StateImages) then TreeView2.StateImages := TImageList.Create(nil); TreeView2.StateImages.AddImages(TreeView1.StateImages); end; end; |
Re: Treeview kopieren
Danke !
Sowas in die Richtung wird es wohl sein. Habe z.Z. nur das Problem, daß der erste TV ein ShellTreeView ist, der keine Imagelist hat. Der zweite TV wird ein DBTV sein, und da werde ich dein Typ gut brauchen können |
Re: Treeview kopieren
Hallo.
ich habe ein aehnliches Problem. in meinem TreeView moechte ich die Veraenderung eines Knotens (nach Drag&Drop) in einer DB Speichern. Habt ihr eine Idee wie ich das loesen koennte? Dann waere mein Progg fertig. so siehts im Moment aus:
Code:
aber das FieldByName wird nicht akteptiert.
var
NR : TNodeRecord; FF : TField; begin NR := KADaoDBTreeView1.GetNodeData(Node); if Assigned(NR.Fields) Then //FF := NR.Fields.FieldByName('OtherData'); end; :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 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 by Thomas Breitkreuz