AGB  ·  Datenschutz  ·  Impressum  







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

TreeView mit 200.000 Einträge und nachladen

Offene Frage von "jaikai"
Ein Thema von jaikai · begonnen am 11. Nov 2005 · letzter Beitrag vom 25. Jan 2006
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 08:47
Die schnellste Möglichkeit, den Baum dynamisch nachzuladen ist die, die Datei korrekt zu sortieren, sodaß Du relativ fix die nachzuladenden Knoten ermitteln kannst. Du kannst versuchen, die Bauminformation in einer einfach TStringlist zu laden. Das ist relativ fix.

Wenn Du nun einen Knoten expandieren willst, dann suchst Du das erste 'Kind' der neuen Unterebene. Ab da liest Du aus der Stringliste einfach alle Elemente dieser Ebene ein. Eine Stringliste mit 200.000 Elementen durchzulaufen geht innerhalb von ein paar ms, also kein Problem. Wichtig ist, das Du anhand eines Schlüssel erkennst, welche Knoten zusammengehören, und das sehe ich bei deinem Verfahren nicht. Für die Root-Ebene ist das einfach '00', aber für die Kinder des 3.Rootknotens ist das nicht gegeben. Deshalb wäre es ratsam, Jedem Knoten eine ID zu geben, und zwar so (rekursiv definiert):
Delphi-Quellcode:
Function ID (Knoten)
  If Knoten = Nil Then
    Result := ''
  Else
    Result := ID (Knoten.Parent)+'/'+Knoten.Index
Nach dieser ID sortierst Du die Stringliste.

Um nun alle Kinder eines Knotens mit einer bestimmten ID 1/2/3 zu laden, suchst Du einfach den Eintrag 1/2/3/0. Das ist das erste Kind. Ab da gehst Du sequentiell in der Stringliste weiter (die ist ja nach der ID sortiert), bis die einzulesende ID nicht mehr dem Muster 1/2/3/* entspricht.

Das sollte ohne Verzögerungen gehen. Ich teste das gleich mal und poste dann hier (wenn ich mich nicht zum Horst mache), eine Demo.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 12:12 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