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();
    	}
    }
    //---------------------------------------------------------------------------
    

Anmelden zum Antworten