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
Antwort Antwort
Seite 1 von 3  1 23      
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#1

TreeView mit 200.000 Einträge und nachladen

  Alt 11. Nov 2005, 01:00
Hi Leute,

ich habe eine TreeView, die später 200.000 Einträge hat. Alles auf einmal zu laden wäre Wahnsinn.

Aber - es gibt das (Explorerartige) Verfahren des nachladens und entladen der Knoten.

Kann mir mal bitte jemand im Schnelldurchlauf schreiben, wie dies funktioniert?

Danke
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 11. Nov 2005, 01:03
Hallo,

dazu geht man folgendermaßen vor: Die Knoten der aktuellen Ebene erstellen. Nachschauen, welche Knoten Unterknoten besitzen. Dort jeweils einen Dummyknoten einfügen, damit ein Pluszeichen erscheint. Im OnChange-Ereignis prüfen, ob ein Dummyknoten existiert, dann diesen löschen und stattdessen die Ebene einlesen.

Gruß
xaromz
  Mit Zitat antworten Zitat
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#3

Re: Danke

  Alt 11. Nov 2005, 01:09
Die NAchtarbeiter sind ja mal wieder Fix - Danke!
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 11. Nov 2005, 08:45
Zitat von xaromz:
Die Knoten der aktuellen Ebene erstellen. Nachschauen, welche Knoten Unterknoten besitzen. Dort jeweils einen Dummyknoten einfügen, damit ein Pluszeichen erscheint. Im OnChange-Ereignis prüfen, ob ein Dummyknoten existiert, dann diesen löschen und stattdessen die Ebene einlesen.
Nicht unbedingt optimal.

Besser eine virtuelle Variante einer TreeView verwenden, die läd die Daten erst, wenn Sie in den Sichtbereich rücken. Sehr scnell.

kostenlose Variante unter

http://www.soft-gems.net/VirtualTreeview/
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#5

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 11. Nov 2005, 08:46
Hallo,

einen Dummyknoten einfügen ist nicht erforderlich, es reicht folgendes:
Delphi-Quellcode:
TreeView1.Selected.HasChildren := True;
//...
if TreeView1.Selected.HasChildren then
  //Knoten laden
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 11. Nov 2005, 09:37
Hallo,
Zitat von Lannes:
Hallo,

einen Dummyknoten einfügen ist nicht erforderlich, es reicht folgendes:
Delphi-Quellcode:
TreeView1.Selected.HasChildren := True;
//...
if TreeView1.Selected.HasChildren then
  //Knoten laden
ist zwar richtig, aber dann kann man nicht feststellen, ob man hier noch was reinladen muss oder das schon gemacht hat.

Gruß
xaromz
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#7

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 11. Nov 2005, 09:51
Zitat von xaromz:
ist zwar richtig, aber dann kann man nicht feststellen, ob man hier noch was reinladen muss oder das schon gemacht hat.
Wenn "Count" 0 ist, dann muss noch geladen werden.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#8

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 11. Nov 2005, 10:07
Hallo,

feststellen ob noch geladen werden muss:
Delphi-Quellcode:
if (TreeView1.Selected.HasChildren) and
   (TreeView1.Selected.Count = 0) then
  showmessage('Noch Laden');
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#9

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 24. Jan 2006, 22:38
Weiterführende Fragen zum Thema - weil ich total verwirrt und irgendwie orientierungslos geworden bin. In den Foren gibsts nur ansatzweise Abhilfe meines Problems.

Zitat:
xaromz --> dazu geht man folgendermaßen vor: Die Knoten der aktuellen Ebene erstellen. Nachschauen, welche Knoten Unterknoten besitzen. Dort jeweils einen Dummyknoten einfügen, damit ein Pluszeichen erscheint. Im OnChange-Ereignis prüfen, ob ein Dummyknoten existiert, dann diesen löschen und stattdessen die Ebene einlesen.
Ohne Betriebsgeheimnisse stehlen zu wollen:
Irgendwie ist mir nicht klar, wie ich die notwendige Datenstruktur hierzu erstellen muß. Ich habe 200.000 Einträge, die ich beliebig zusammenstellen kann. Als #09-Einrückern formatiert und load - benötigt der komplette Baum ca 20-30 sec. Einzelne Root-Zweige bis zu 8 sec. Das ist mir zu lang.

Oder aber wie diess (so wie ichs gern verwenden würde, weil ich hier das Icon, die passende Verlinkung und mehr bereits integrieren kann):

Delphi-Quellcode:
Datei Knoten
| | NodeText
| | |
00097498:00:Root-Knoten ganz unten (00) -> davon gibts 50 Stück
00097499:01:Unterknoten 0-1
00097500:02:Unterknoten 0-2
00097501:01:Unterknoten 0-3
00097502:02:Unterknoten 0-3-1
00097503:02:Unterknoten 0-3-2
00097504:03:Unterknoten 0-3-2-1
etc
Fragen:

--> Die Knoten der aktuellen Ebene erstellen...
Benötigt eine Datei mit diesem Index oder aber Handarbeit. Benötigen die SubEinträge denn ebenfalls jeweils Dateien, die geladen und eingefügt werden? Oder kann ich nicht dem Knoten so etwas wie einen neuen absoluten Index verpassen, der meinem zweiten Modell entspricht? Ich hab gelesen, ein Objekt zuordnen würde gehen, finde aber keine Hinweise, wie das geht.

--> Im OnChange-Ereignis prüfen, ob ein Dummyknoten(HasChildren)existiert
Nachfrage dessen ist mir klar - aber das ganze müßte dann wieder gestoppt werden. Also eine Begrenzung des füllens. Ebene einlesen - sieht wieder nach indizierten Dateien aus, oder Abfragen, ob der Sub-Eintrag noch Childs enthält, dann break. Ich will die Erzeugung von möglichen 200.000 Dateien vermeiden. Wie geht das?

Wenn ich keine Urheberrechte verletze, hat jemand ein paar Source-Beispiel für mich? Ich blick da nicht wirklich durch.

Danke

Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 06:35
Zitat:
Ich habe 200.000 Einträge, die ich beliebig zusammenstellen kann. Als #09-Einrückern formatiert und load - benötigt der komplette Baum ca 20-30 sec. Einzelne Root-Zweige bis zu 8 sec. Das ist mir zu lang.
Ich kann nur nochmal auf die virtuelle Variante in meinem vorherigen Posting verweisen. Die wird auch einige Deiner anderen Probleme lösen.
Sven Harazim
--
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 01:07 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