Knoten in einem TreeView per Index selektieren
-
Ich möchte die Funktion simulieren, die abläuft, wenn der Fokus auf einem TreeView liegt und man die Cursortasten drückt. Allerdings sollen diese Funktionen auf anderen Tasten liegen.
Also wenn ich Taste x drücke, soll die Selektierung eins nach oben rücken, wenn Taste y gedrückt wird, eins nach unten.
Ich habe es so versucht, aber das geht nicht:TTreeNode *Knoten; Knoten->Index = 2; Knoten->Selected = true; TreeView_Dateneditor->Select(Knoten);
-
Hallo
Du solltest zum Bestimmen des nächsten Knoten TTreeNode::GetNext() und ::GetPrev verwenden.
bis bald
akari
-
Ok, das klappt. Hab es so umgesetzt:
void __fastcall TForm1::Button1Click(TObject *Sender) { // Nächsten Knoten wählen TTreeNode *Knoten = TreeView1->Selected; //aktuellen Knoten suchen TTreeNode *NaechsterKnoten = Knoten->GetNext(); // folgenden Knoten suchen if (NaechsterKnoten != NULL) // wenn Folgeknoten vorhanden ist { TreeView1->Select(NaechsterKnoten); // nächsten Knoten auswählen TreeView1->SetFocus(); // damit der Knoten nicht nur grau selektiert ist } else // wenn kein weiterer Knoten vorhanden ist { TreeView1->Select(Knoten); // den gleichen Knoten wieder anwählen, weil sonst das select verschwindet TreeView1->SetFocus(); // damit der Knoten nicht nur grau } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // Vorherigen Knoten wählen TTreeNode *Knoten = TreeView1->Selected; TTreeNode *NaechsterKnoten = Knoten->GetPrev(); TreeView1->Select(NaechsterKnoten); if (NaechsterKnoten != NULL) { TreeView1->Select(NaechsterKnoten); TreeView1->SetFocus(); } else { TreeView1->Select(Knoten); TreeView1->SetFocus(); } } //---------------------------------------------------------------------------