Bueno. Después de dar muchas vueltas encontré la solución: GetFirst, como me sugería Casimiro, no me vale porque ese método te dirige al primer nodo de todo el árbol. Me ha quedado así el código:
Código:
AnsiString cReportTitle = "";
PVirtualNode Nodo1 = Listado->FocusedNode;
while (Listado->GetNodeLevel(Nodo1) > 0)
{
cAux = Trim(((PTreeCor)Listado->GetNodeData(Nodo1))->Identidad);
if (cAux.Pos("(") != 0)
cAux = cAux.SubString(1, cAux.Pos("(") - 1).Trim();
cReportTitle = UpperCase(cAux) + " - " + cReportTitle;
Nodo1 = Nodo1->Parent;
}
cReportTitle = "LISTADO POR " +
UpperCase(Trim(((PTreeCor)Listado->GetNodeData(Nodo1))->Identidad)) + " - " +
cReportTitle.SubString(1, cReportTitle.LastDelimiter("-") - 1).Trim();