Buenos días. Tengo un TVirtualStringTree como este:

y a partir de la elección del usuario construyo un AnsiString para bautizar un informe; en el caso del ejemplo debe quedar así:
Cita:
F. DE PAGO - BANCO - CTAS. CORRECTAS - POR CUENTA
|
Para construir la cadena uso este código:
Código:
AnsiString cReportTitle = "";
PVirtualNode Nodo1 = Listado->FocusedNode;
while (Nodo1 != NULL)
{
try
{
cAux = Trim(((PTreeCor)Listado->GetNodeData(Nodo1))->Identidad);
}
catch(Exception &Exc)
{
break;
}
if (cAux.Pos("(") != 0)
cAux = cAux.SubString(1, cAux.Pos("(") - 1).Trim();
cReportTitle = UpperCase(cAux) + " - " + cReportTitle;
Nodo1 = Nodo1->Parent;
}
cReportTitle = "LISTADO POR " + cReportTitle.SubString(1, cReportTitle.LastDelimiter("-") - 1).Trim();
pero he comprobado con el depurador que la condición del while no se cumple nunca: Cuando el bucle llega al primer nodo de la rama (F. de pago en este caso) la propiedad Parent de Nodo1 sigue teniendo valor, razón por la que he tenido que poner ese try...catch() para poder continuar la ejecución.
¿Cómo podría saber que he llegado al primer nodo de una rama en ese TVST?