Problem beim Füllen einer Treeview
-
Ich habe eine Liste von AnsiStrings, die ich alle in eine Treeview eintragen möchte.
Dabei soll drauf geachtet werden, dass jeder AnsiString nur einmal eingetragen wird.
Dies ist mein Versuch:void __fastcall TDevDlg::AddDevNode(TDev* Adev) { DevStruct str = Adev->GetStruct(); TTreeNode * KNode = 0; TTreeNodes *Nodes = TreeView1->Items; TTreeNode * SNode = Nodes->GetFirstNode(); while(SNode) { if(SNode->Text == str.Kunde) { KNode = SNode; break; } SNode = SNode->getNextSibling(); } if(!KNode) { KNode = Nodes->Add(KNode,str.Kunde); } }
Nur leider scheint TreeView1->Items auf eine falsche Adresse zu zeigen, so dass es schon die erste Fehlermeldung dort gibt.
Die Suchfunktion hat mir gezeigt, dass es andere auf diese Art und Weise hingekriegt haben.
Wo liegt der Fehler?
-
Wie heißt denn die Fehlermeldung?
-
Was soll:
if(!KNode)
{
KNode = Nodes->Add(KNode,str.Kunde);
}machen?
Nach KNode neuen Einfügeb? KNode ist aber in dem Fall undefiniert!Gruss
Frank
-
Jo es hat sich schon alles wieder erledigt.
Der Fehler war, dass ich die Methode im Konstruktor einer Form aufgerufen habe.
Ich habe es jetzt in OnShow() gepackt und nun funktioniert es perfekt.