TreeView Selected bei rechten Mauklick nicht ok



  • Hallo,
    ich nutze ein TTreeView. Mit der rechten Maustaste öffnet sich ein TPopup-Objekt.
    Der Knoten (Ast) der gerade bei dem rechten Klick angewählt wurde möchte ich filtern um seinen Text zu erhalten. Obwohl die Eigenschaft vom TreeView Objekzt RigthClickSelect = true ist, erhalte ich dennoch nur mit "TreeView->Selected" den zuletzt mit der linken Maustaste angewählten Knoten und dessen Text. Was muss ich ändern?
    Das Event wird ausgeführt, wenn ich ein Item des TPopup-Objekts anklicke.
    (OnListClick();)
    In diesem Ereigniss erfolgt:
    ... = TreeView->Selected->Text;



  • Probier mal OnChange anstatt OnClick.

    Gruß

    Alexander



  • Danke für den Hinweis,
    leider tritt das Ereigniss ja dann ein wenn der Benutzer ein Item von TPopmenu aufruft. Nicht wenn ich mit der rechten Maustaste auf ein Knoten klicke.
    Dabei wird nur dieses Popumenü aufgerufen und der Knoten der mit der rechten Maustaste angewählt wurde bleibt markiert.



  • Gibt es vieleciht die Möglichkeit auf einen Rechtsklick der Mouse eine Event zu legen? Problem, das TreeView-Objekt kann dieses nicht.



  • Ich hab das ebenfalls mal gebraucht und nicht hinbekommen...

    Gelöst habe ich es durch einen Workaround im OnMouseDown-Ereignis:

    void __fastcall TFormMainViewer::tvKategorienMouseDown(TObject *Sender,
    		TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    	// Mausklick mit rechter Maustaste soll VOR dem Anzeigen des PopupMenus das entsprende Node auswählen
    	if (Button == mbRight)
    	{
    		TTreeNode* ttnMouseOverNode = tvKategorien->GetNodeAt(X,Y);
    		if (ttnMouseOverNode && X && Y)
    		{
    			tvKategorien->Selected = ttnMouseOverNode;
    		}
    	}
    }
    


  • Habe ich wohl falsch verstanden.
    Interessanterweise haben schon öfter Leute das Problem gehabt (s. google).
    Eine Lösung ist wohl auch, im OnPopup-Ereignis des Popup-Menüs
    Den gewählten Knoten sich selbst zuzuweisen:

    TreeView1->Selected = TreeView1->Selected;
    

    Ziemlich seltsam, funktioniert aber (BCB2006 Pro).

    Habe ich hier gefunden.

    Gruß

    Alexander



  • Super, danke euch für die Hinweise.


Anmelden zum Antworten