Ver Mensaje Individual
  #1  
Antiguo 03-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Primer nodo de un TVirtualStringTree

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?
Responder Con Cita