Gracias por la sugerencia pero no funciona.
Esto es lo que está pasando y me tiene completamente descolocado:
![](https://i.ibb.co/PggfrsF/Depurador.jpg)
Como veis las tres primeras veces va tomando los valores correctos: 01/10/2022, Ordinarios, Banco (aunque ponía Desconocida este es el valor correcto). En los tres casos aparece HasChildren como true porque en los tres casos hay un hijo y CheckState como csCheckedNormal por que está seleccionado el nodo completo.
Pero en cuanto hace
Lista->GetNext(Nodo) para tomar el valor TOMELLOSO, sin que el código haga nada CheckState se pone como csUncheckedNormal y, claro está, no se ejecuta el query.