Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 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
  #2  
Antiguo 03-02-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo recordar que era algo así como:
Node := Vts1.GetFirst;
Responder Con Cita
  #3  
Antiguo 03-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Creo recordar que era algo así como:
Node := Vts1.GetFirst;
Gracias. Lo probaré
Responder Con Cita
  #4  
Antiguo 03-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
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();
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Recorrer TVirtualStringTree Angel.Matilla C++ Builder 6 25-11-2020 10:51:51
Efectos en un TVirtualStringTree Angel.Matilla C++ Builder 7 10-11-2020 12:16:29
Personalizar TVirtualStringTree Angel.Matilla C++ Builder 10 23-11-2019 10:10:49
C++Builder 6 CFDI Mexico ¿Como agregar nodo dentro de otro nodo como hijo? JXJ C++ Builder 0 10-03-2016 03:51:01
Consulta - TP Arboles- "Para cada nodo de un arbol Indique nombre del nodo padre" velapuerca88 Varios 5 08-06-2012 17:35:33


La franja horaria es GMT +2. Ahora son las 00:09:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi