Der VirtualTreeView hat genau deshalb seinen Namen, weil eben alles virtuell gemacht werden sollte. Allen Nodes direkt den State
ivsExpanded
zu geben macht keinen wirklichen Sinn. Du klappst dann 1 Million Nodes auf, obwohl du im schlimmsten Fall nur eine einzige Node sehen müsstest.
Normalerweise gibt man einer Node den
InitialState ivsHasChildren
. Dann erhalten die Nodes ein Plus-Zeichen und man kann die Node manuell aufklappen. In dem Moment wird dann
OnInitChildren
aufgerufen und du teilst dem Tree mit, wie viele Child Nodes die Node hat. Das kannst du natürlich mit deiner Variante kombinieren, dass die Node aufgeklappt wird, wenn sie in den sichtbaren Bereich des Trees scrollt. Einfach
ExpandNode()
aufrufen in dem Moment und alle anderen Events laufen automatisch.
Das hat aber leider den Nebeneffekt, dass es nicht möglich ist, z.B. den Knoten mit Index 123456 mittels ScrollIntoView() genau nach oben zu bugsieren.
Es gibt auch noch die Property
TopNode
. Damit kannst du dann festlegen, welche Node ganz oben sein soll.