07. november 2002 - 15:34Der er
1 kommentar og 1 løsning
Borland TTreeView?
Jeg har et treeview som jeg har et lille problem med, jeg ville gerne have at vide hvordan man insætter en child efter parent'ens navn og ikke nummer, og om det er muligt at adde på en bestemt linje ?
jeg har fundet ud af at alle muligehederne kan havde hver deres Item[nummer] så slipper jeg for "by text/name" Men jeg kan jo godt hende at havde en Item[1] og en Item[3] uden at havde en Item[2] og det for den jo enten til at smide en fejlbox op i hovedet på mig eller lave en add som er tom (og det ser jo lidt dumt ud) og hvis jeg bare sletter de tomme add's så bliver Item[3] vel til Item[2] og det fjerner hele iden i det så hvis man på en eller anden måde kunne lave en usynlig add med usynlige childs vil jeg også respektere den løsning
Ad 1) Der er ikke (som du har opdaget) nogen metode til at indsætte efter parent'ens navn - men du ret enkelt kode en (idet jeg antager at "navn" er den tekst der står på noden):
TTreeNode * FindNode(AnsiString parentName) { int idx = 0; while (idx < treeMain->Items->Count) { if (treeMain->Items->Item[idx]->Text.AnsiPos(parentName) > 0) { return treeMain->Items->Item[idx]; }; idx++ }; // All nodes.
return NULL; }
Så indsætter du et nyt child vha.
TTreeNode *parent; if ((parent = FindParent("Farfar ole")) != NULL) treeMain->Items->AddChild(parent, "Min egen far");
2) Ja - det er det jeg gør lige her ovenfor.
Du skal være opmærksom på forskellen mellem Add() og AddChild() - man kan sige at Add() laver "brødre" til grundnoden - AddChild() laver "børn".
A +-A1 +-A2 +-A3 B C
Hvis du laver Add(B) får du en D "bror" - hvis du laver AddChild(B) får du et B1 "barn".
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.