Moin Dominik,
ich hatte da ein ähnliches Phänomen:
Beim Eintritt in eine Methode (TAction.Execute) stimmte TTreeView.Selected, und nachdem dort ein TOpenDialog erfolgreich (TOpenDialog.Execute = true) aufgerufen wurde, enthielt TTreeView.Selected den Wert des ersten Nodes im TreeView.
Workaround:
Zu Beginn der Methode den Wert von TTreeView.Selected in einer lokalen Variable vom Typ TTreeNode zwischenspeichern, und am Ende der Methode (bzw. dort wo's gebraucht wird) wieder zurücksetzen.