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 20:27:52 |
Primer nodo de un TVirtualStringTree | Angel.Matilla | C++ Builder | 3 | 03-02-2022 14:36:42 |
Recorrer TVirtualStringTree | Angel.Matilla | C++ Builder | 6 | 25-11-2020 11:51:51 |
Efectos en un TVirtualStringTree | Angel.Matilla | C++ Builder | 7 | 10-11-2020 13:16:29 |
Personalizar TVirtualStringTree | Angel.Matilla | C++ Builder | 10 | 23-11-2019 11:10:49 |
|