Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: VirtualStringTreee auf Eintrag prüfen.

  Alt 14. Jun 2020, 23:10
Dieso ist AddChild nicht schön?
Normalerweise arbeitet man beim VST mit RootNodeCount und den Events OnInitNode und OnInitChildren . Bei AddChild werden die Nodes immer direkt beim Aufruf der Methode validiert was dazu führt, dass die unterschiedlichsten Events aufgerufen werden und dadurch der gesamte Tree die Nodes nicht mehr virtuell vorhält sondern direkt mit den echten Nutzdaten befüllt.

Wenn du RootNodeCount nutzt, dann werden virtuell nur die übergebene Anzahl Nodes erzeugt. Zudem wird das Event OnInitNode für jede Node ausgeführt um schon einmal die Daten daran zu binden. Auch ein gewisser initialer Status (mit dem Referenz Parameter InitialStates ) kann der Node bei dem Event mitgegeben werden (z.B. ob diese Children hat oder nicht). Wirklich initialisiert werden die Nodes aber erst, wenn sie entweder in den sichtbaren Bereich gelangen oder du per Code eine Funktion ausführst die diese Node betrifft.


Hier mal ein Auszug aus dem VST SourceCode zur Procedure AddChild()

Delphi-Quellcode:
// Adds a new node to the given parent node. This is simply done by increasing the child count of the
// parent node. If Parent is nil then the new node is added as (last) top level node.
// UserData can be used to set the first SizeOf(Pointer) bytes of the user data area to an initial value which can be used
// in OnInitNode and will also cause to trigger the OnFreeNode event (if <> nil) even if the node is not yet
// "officially" initialized.
// AddChild is a compatibility method and will implicitly validate the parent node. This is however
// against the virtual paradigm and hence I dissuade from its usage.
  Mit Zitat antworten Zitat