Duch das Setzen von Form.Parent := pnl1;
wird ein DestroyHandle aufgerufen, was intern dazu führt, daß die Items des TreeView freigegeben und neu erzeugt werden. Dadurch werden die gespeicherten Pointer auf die TreeNodes ungültig.
Es kommt immer darauf an, wie das intern behandelt wird.
Wenn nur die Handles freigegeben werden, dann bleiben meistens dennoch die TObjekt-Klassen erhalten und danach wird dann daraus/darin dann wieder das neue
Handle erzeugt.
Aber wie der TreeView intern mit seinen Items umgeht, weiß ich jetzt auch nicht.
Das kann man aber leicht prüfen.
> Einfach vor dem AddChild nochmal den "aktuellen" Wert auslesen, also das Item suchen, und dann die Zeiger vergleichen.
Natürlich kann man auch einfach immer den Parent jedesmal über den Namen neu suchen, beim Add, und auf diese globalen Variablen verzichten, vorallem wenn mann jetzt weiß (vermutlich), daß es mit diesen Zeigern gern Probleme gibt und sie sich schnell mal ändern könnten.