Sigo a vueltas con este elemento. Me parece estupendo, pero me está costando verdaderos sudores trabajar con él. Siguiendo con el mismo "bicho" de mi anterior hilo, tengo este árbol:
Para procesar los nodos seleccionados uso este código para rellenar un TListView de otro formulario:
Código:
TListItem *pItem;
PVirtualNode Nodo1, Nodo2;
Nodo1 = Mesas->GetFirst();
while (Nodo1 != NULL)
{
if (Mesas->CheckState[Nodo1] > csUncheckedPressed)
{
Nodo2 = Mesas->GetNext(Nodo1);
while (Nodo2 != NULL && Nodo2->Parent == Nodo1)
{
if (Mesas->CheckState[Nodo2] > csUncheckedPressed)
{
pItem = fEscrutinio->LisMesas->Items->Add();
pItem->Caption = ((PTreeEle)Mesas->GetNodeData(Nodo1))->Municipio;
pItem->SubItems->Add(((PTreeEle)Mesas->GetNodeData(Nodo2))->Municipio);
pItem->SubItems->Add(FormatFloat("#,###", ((PTreeEle)Mesas->GetNodeData(Nodo2))->Censo));
pItem->SubItems->Add(FormatFloat("#,###", ((PTreeEle)Mesas->GetNodeData(Nodo2))->Votos));
pItem->SubItems->Add(((PTreeEle)Mesas->GetNodeData(Nodo2))->CodMes);
}
Nodo2 = Mesas->GetNextSibling(Nodo2);
}
}
Nodo1 = Mesas->GetNextSibling(Nodo1);
}
Tal cual está el código al pasar el primer nodo (ABENOJAR) se mete por el
if, pero si el nodo no está desplegado el segundo if se lo salta, y en este caso estarían marcados todos los nodos de niveles inferiores. He intentado desplegar el nodo con
Mesas->Expanded[Nodo1] = true antes de asignar Nodo2, pero al hacerlo se desmarca todo el nodo. ¿Podéis ayudarme o darme una pista de por donde debo tirar?