![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
Ordenar un TVirtualStringTree
Buenos días. Estoy tratando de cargar un TVT a partir de una hoja de cálculo Excel que viene desordenada. En la ayuda de este componente he visto que hay dos métodos (Sort y SortTree) que, en teoría, ordenan el árbol una vez cargado. He probado ambos de la siguiente forma:
Código:
Lista->Sort(Nodo1, 0, sdAscendig, true); Lista->SortTree(0, sdAscending, true); ![]() Es evidente que esos últimos cuatro registros, si el árbol está ordenado, no se encuentran en el lugar que les corresponde; ¿hay algo más en esos métodos que se me está escapando? |
|
#2
|
||||
|
||||
|
En teoría es:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#3
|
||||
|
||||
|
Cita:
Cita:
|
|
#4
|
||||
|
||||
|
¿Con ninguno de los 2 métodos?
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
Con ambos me da el mismo resultado de la imagen. Claro que como la Ayuda del TVT viene tan bien explicada no sé si el método hay que ponerlo antes o después del EndUpdate(), si como decía antes hace referencia a la columna que quiero ordenar o a la que sustenta a la misma...
|
|
#6
|
||||
|
||||
|
Ni idea, la verdad, sólo he pedido un ejemplo a la "IA Bard" y me ha dicho esto:
Código:
#include <vcl.h>
class TForm1 : public TForm
{
public:
TVirtualStringTree *Tree1;
__fastcall TForm1(TComponent* Owner);
void __fastcall FormCreate(TObject* Sender);
void __fastcall SortTree(int Column);
void __fastcall Tree1Sorted(TObject* Sender, TTreeNode* Node, bool& Continue);
};
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
Tree1 = new TVirtualStringTree(this);
Tree1->ColumnCount = 2;
Tree1->Columns[0]->Caption = "Nombre";
Tree1->Columns[1]->Caption = "Edad";
Tree1->AddChild(NULL, "Juan", 20);
Tree1->AddChild(NULL, "María", 25);
Tree1->AddChild(NULL, "Pedro", 30);
}
void TForm1::FormCreate(TObject* Sender)
{
SortTree(0);
}
void TForm1::SortTree(int Column)
{
Tree1->Sort(Column, true);
}
void TForm1::Tree1Sorted(TObject* Sender, TTreeNode* Node, bool& Continue)
{
if (Node->DataValue[0] < Node->Parent->DataValue[0])
Continue = false;
}
int main()
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
return 0;
}
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
Gracias por la ayuda. Por la respuesta que me das intuyo que si quiero ordenar la 1ª columna (índice 0) se ordenarían los nodos padre; como en este caso hay un padre y varios hijos, estos aparentemente no se ordenan. Probaré con lo que te han sugerido.
|
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| NodeParent en TVirtualStringTree | Angel.Matilla | C++ Builder | 5 | 10-05-2022 19:27:52 |
| Primer nodo de un TVirtualStringTree | Angel.Matilla | C++ Builder | 3 | 03-02-2022 13:36:42 |
| 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 |
|