du hast die
vcl und den vst nicht verstanden...
FormActivate wird immer dann aufgerufen wenn die anwendung bzw. das formular den focus erhält. (dunkelblauber form titel bei
w2k)
dort den tree zu initialisieren ist nicht das klügste.
jedesmal wenn wieder in die anwendung geswitcht wird (z.b. mit alt-tab), wird der tree initialisiert.
(es sei den du hast das gewollt, dann nehme ich das mit dervcl zurueck)
besser im onCreate
zum tree:
dieser gekommt gesagt wie gross die daten sind. (nodedatasize)
normal nimmt man dort record weil diese haben eine feste groesse.
in meinen projekte nehme ich objekte -> nodedatasize ist dann die groesse des pointer auf das objekt
jetzt gibt es mehrere möglichkeiten den tree zu füllen.
a)
du laeuft durch eine schleife so oft wie datensätze da sind und kopierst diese in ein passendes record oder in ein objekt und fügst diese dann mit addchild+daten hinzu.
deine load routine (loadcds) ist also irgendwie am ziel vorbei
b)
man baut die struktur zusammen und lässt dann die knoten per initnode füllen.
nur knoten die angezeigt werden werden dann auch initialisiert (geladen aus der datenbank).
methode b) hat einen grossen geschwindigkeitsvorteil.
wenn du rootnodecount angibst wird gleich der noetige speicherplatz (für die records) belegt.
geladen werden nur die die angezeigt werden.
egal welche methode du verwendest - du brauchst nur firecursors (readonly, forwardonly)
langsames cursorspringen mit locate, filter usw braucht man nicht.
im gettext gibt man eigendlich dann nun noch den record bzw obj aus (welches sich dann im speicher befindet).
langsame datenbankoperation führt man dort eigendlich nicht aus.
gruss