Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TreeView kopieren (https://www.delphipraxis.net/14344-treeview-kopieren.html)

toms 7. Jan 2004 14:01


TreeView kopieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Möchte eine TreeView Struktur in einen TTreeView kopieren.
(Auch wenn der TreeView in einer anderen Application ist)

Das funktioniert schon mal ganz gut, aber es durchlauft nicht alle
Knoten. Irgendwo ist an der Rekursion was nicht richtig.
Kann mir da jemand weiterhelfen?

danke!

// Ein vollständiges Beispielprojekt befindet sich in der Anlage
Delphi-Quellcode:
  procedure AddNodes(hTree: HWND; ASrc: HTREEITEM; ADst: TTreeNode);
  var
    NextDst: TTreeNode;
    NextSrc: HTREEITEM;
  begin
    {if not Assigned(ASrc) then
     Exit;}

    TVItem.hItem := ASrc;
    TVItem.mask := TVIF_TEXT or TVIF_IMAGE or TVIF_PARAM;
    MM.Write(TVItem, PrTVItem, SizeOf(TTVItem));
    {Get Next TreeView Item}
    TreeView_GetItem(TreeWnd, PrTVItem^);

    {Add to our TreeView }
    NextDst := Form1.TreeView1.Items.AddChild(ADst, MM.ReadStr(PrText));

    {Get Next TreeView Item}
    NextSrc := TreeView_GetChild(hTree, ASrc);
    while Assigned(NextSrc) do
    begin
     AddNodes(hTree, NextSrc, NextDst);
     NextSrc := TreeView_GetNextItem(hTree, NextSrc, TVGN_NEXT);
    end;
  end;

toms 7. Jan 2004 19:25

Re: TreeView kopieren
 
Hallo???

Stanlay Hanks 7. Jan 2004 19:50

Re: TreeView kopieren
 
Schieben...nach 5 Stunden :?

Also. Warum speicherst du den Treeview nicht einfach und lädst ihn anschließend woanders wieder?

Delphi-Quellcode:
TreeView1.SaveToFile('C:\TestTree.tre');
TreeView2.LoadFromFile('C:\TestTree.tre');
Man liest sich, Stanlay :hi:

toms 7. Jan 2004 19:54

Re: TreeView kopieren
 
Weil der "TreeView1" z.B auch der TreeView vom Explorer sein kann.

Stanlay Hanks 7. Jan 2004 20:27

Re: TreeView kopieren
 
:wall: Sorry. Du hattest ja auch geschrieben, dass er in einer anderen App sein kann. Mein Fehler :wall:

Dann kann ich dir leider nicht weiterhelfen, hab mich mit dem Thema noch nicht beschäftigt.
Trotzdem noch viel Glück!

Man liest sich, Stanlay :hi:

CyberDevil 19. Nov 2005 16:20

Re: TreeView kopieren
 
Hallo!

Ich vermute mal, dass sich die Antwort schon längst erledigt hat. Dennoch: das Problem ist nicht die Rekursion, sondern die Tatsache, dass ein TreeView keine Wurzel hat. Das Element, was Du als Wurzel ermittelst, ist das "erste" Element des TreeViews. Mittels GetNextSibling musst Du die anderen Elemente des TreeViews auf dieser Ebene noch ermitteln und AddNodes für diese aufrufen.

Viele Grüße,
CyberDevil


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

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