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 24-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Recorrer TVirtualStringTree

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?
Responder Con Cita
  #2  
Antiguo 24-11-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes recorrerlos con los métodos: GetFirstChecked y GetNextChecked.
Responder Con Cita
  #3  
Antiguo 24-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Gracias. Probaré y ya os diré como ha ido.
Responder Con Cita
  #4  
Antiguo 24-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Puedes recorrerlos con los métodos: GetFirstChecked y GetNextChecked.
¡Mi gozo en un pozo! En C++ no existen esos métodos.
Responder Con Cita
  #5  
Antiguo 24-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
¡Solucionado! Estaba planteando fatal la lógica del proceso. Lo he dejado así:
Código:
void __fastcall TfSelDocs::AlbaranesChecked(TBaseVirtualTree *Sender, PVirtualNode Node)
{
     int nHay = 0;
     slEmisor->Clear();

     Nodo1 = Albaranes->GetFirst();

     while (Nodo1 != NULL)
     {
          if ((Albaranes->CheckState[Nodo1] == csCheckedNormal || Albaranes->CheckState[Nodo1] == csCheckedPressed) && !Albaranes->HasChildren[Nodo1])
               nHay ++;
          Nodo1 = Albaranes->GetNext(Nodo1);
     }
}
y funciona a la perfección.
Responder Con Cita
  #6  
Antiguo 24-11-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es curioso que sean distintos para C++ y Delphi.
Responder Con Cita
  #7  
Antiguo 25-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Es curioso que sean distintos para C++ y Delphi.
Sí, siempre me ha llamado la atención.
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
Efectos en un TVirtualStringTree Angel.Matilla C++ Builder 7 10-11-2020 13:16:29
Saber si un TVirtualStringTree tiene datos Angel.Matilla C++ Builder 1 29-07-2020 14:21:07
Personalizar TVirtualStringTree Angel.Matilla C++ Builder 10 23-11-2019 11:10:49
Cargar datos en TVirtualStringTree Angel.Matilla C++ Builder 2 28-09-2019 13:04:22
Recorrer registros golf2008 MySQL 3 17-04-2008 16:56:44


La franja horaria es GMT +2. Ahora son las 01:26:09.


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