![]() |
[solved] Mit Rechtsklick Objekte markieren?
Bei vielen Komponenten kann man mit der linken Maustaste etwas auswählen und blau markieren. Ich möchte sowas aber auch mit der rechten Mousetaste machen können, also wenn mein PopUp-Menü aufgeht wird automatisch das Objekt darunter blau markiert. Zur Zeit muss ich immer erst das Objekt linksklicken und dann rechtsklicken, damit er das korrekte Objekt hat.
Das konkrete Beispiel ist in diesem Fall ein VirtualTreeView, wo ich ein PopUpMenu habe. Aber ich muss immer erst linksklicken, damit ein Node ausgewählt ist. Ich habe mir dazu schon das Ereignis OnMouseDown angesehen, das funktioniert auch, aber er weiss dann nicht, über welchem Node ich geklickt habe, denn ich bekomme dort nur X und Y Koordinaten. Gibts da eine elegante Lösung ohne erst über x und y rechnen zu müssen, das wäre umständlich und ungenau. |
Re: Mit Rechtsklick Objekte markieren?
Habe leider gerade kein Delphi zur Hand, aber imho haben solche Controls eine Methode namens ItemFromBlub oder IndexFromBla oder sowas... ;-)
|
Re: Mit Rechtsklick Objekte markieren?
Hmmm kann ich leider nichts finden.
|
Re: Mit Rechtsklick Objekte markieren?
Ah, hab was gefunden:
Delphi-Quellcode:
Problem ist jetzt aber, er markiert den rechtsklick-Node blau, aber der Fokus (grauer Rahmen) bleibt um den letzten linksklick-Node.
[in OnMouseMove]
if Button = mbRight then begin Node := VST1.GetNodeAt(X, Y); VST1.Selected[Node] := True; end; |
Re: Mit Rechtsklick Objekte markieren?
Ist eigentlich auch richtig so. Wenn du es anders haben möchtest, dann musst du das Item selbst selektieren. Eventuell ist das Ereignis OnGetPopupMenu() besser für deine Zwecke geeignet.
Grüße vom marabu |
Re: Mit Rechtsklick Objekte markieren?
OK, habs raus (für andere die dieses Problem irgendwann mal haben werden):
Delphi-Quellcode:
Man muss beides benutzen und zum Glück lassen beide (FocusedNode und Selected) Get und Set zu.
if Button = mbRight then
begin Node := VST1.GetNodeAt(X, Y); VST1.FocusedNode := Node; VST1.Selected[Node]:=true; end; |
Re: [solved] Mit Rechtsklick Objekte markieren?
Die Komponente VirtualTreeView bietet unter TreeOptions.SelectionOptions die Option "toRightSelect" an.
Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz