Buenas a todos. Ya sé que soy un poco pesado, pero es que no encuentro el camino. Tengo este TVirtualStringTree:

y quiero comprobar los nodos seleccionados. Para ello estoy usando este código:
Código:
void __fastcall TfSelDocs::AlbaranesChecked(TBaseVirtualTree *Sender, PVirtualNode Node)
{
int nHay = 0;
slEmisor->Clear();
if (Albaranes->CheckState[Node] == csCheckedNormal || Albaranes->CheckState[Node] == csCheckedPressed)
{
Nodo1 = Albaranes->GetFirst();
Nodo2 = NULL;
while (Nodo1 != NULL && Nodo2 == NULL)
{
if ((Albaranes->CheckState[Nodo1] == csCheckedNormal || Albaranes->CheckState[Nodo1] == csCheckedPressed) && !Albaranes->HasChildren[Nodo1])
{
nHay ++;
Nodo2 = Nodo1;
}
Nodo1 = Albaranes->GetNext(Nodo1);
}
}
}
pero me he dado cuenta que de esta forma en un caso como el de la imagen siempre me cuenta un nodo; cuando hay dos marcados sólo la primera vez que recorre el bucle entra en él. ¿Qué estoy haciendo mal?