Ich sehe gerade erst, dass Node eine lokale Variable ist. Finde das komisch, hinter dem "var" für lokale Variablen was zu schreiben, weil das dann optisch nicht sofort von Parametern zu unterscheiden ist.
Dann müsste der Compiler doch meckern, dass Node.SelectedIndex undefiniert sein kann. Da müsste dann eigentlich auch eine
AV stattfinden.
Hast du mal geprüft, ob FPopupNode nil ist? Also entweder liefert GetNodeAt nil zurück oder deine obere Methode wird zu spät aufgerufen. Letzteres glaube ich zwar nicht, aber in ich habe deinen Code mal mit meinem verglichen und ich mache etwas ähnliches wie du in TPopupMenu.OnPopup und nicht in TControl.OnContextPopup.