AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

nonVCL Treeview rekursiv durchgehen

Ein Thema von Luckie · begonnen am 3. Jul 2007 · letzter Beitrag vom 5. Jul 2007
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

nonVCL Treeview rekursiv durchgehen

  Alt 3. Jul 2007, 23:37
Dadurch, dass ich an der Arbeit FastMM einsetzen musste, habe ich gerade mal meinen Usermanager auf Speicherlecks getestet. Sie sind Gott sei Dank nicht so gravieren, aber trotzdem unschön.

Folgende Situation:
Ich hole mir alle Benutzer und lege sie als Objekte im lParam Attribut der Treeviewnodes als Referenzen ab. So dass ich mir die Informationen zu jeden beliebigen Benutzer anzeigen lassen kann, ohne jedes mal die Informationen extra holen zu müssen. Fülle ich den Treeview neu, werden zuvor alle Einträge gelöscht. Dabei gehen natürlich die Referenzen verloren und ich habe Speicherlecks. Also muss ich den Treeview vor dem "neu" Füllen durchgehen und die Objekte freigeben:
Delphi-Quellcode:
  // in lParam gepeicherte Objektreferenzen freigeben
  hTVItem := TreeView_GetRoot(hTV);
  hTVItem := Treeview_GetNextItem(hTV, hTVItem, TVGN_CHILD);
  while hTVItem <> nil do
  begin
    hTVItem := TreeView_GetNextItem(hTV, hTVItem, TVGN_NEXT);
    ZeroMemory(@TVItem, sizeof(TTVItem));
    TVItem.hItem := hTVItem;
    TVItem.mask := TVIF_PARAM or TVIF_TEXT;
    if TreeView_GetItemW(hTV, TVItem) then
    begin
      if Assigned(TObject(TVItem.lParam)) then
        TObject(TVItem.lParam).Free;
    end;
  end;
Das funktioniert auch ganz gut. Allerdings nur für die erste Ebene. Je nach Ansicht können die Objekte aber auch eine Ebene tiefer mit einem Item verknüpft sein. Ich muss den Treeview also rekursiv durchgehen. Und das ist der Punkt, an dem ich scheitere. Ich bräuchte mal eure Hilfe, um aus dem obigen Codeausschnitt eine Rekursivefunktion zu machen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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