Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [solved] Mit Rechtsklick Objekte markieren? (https://www.delphipraxis.net/72450-%5Bsolved%5D-mit-rechtsklick-objekte-markieren.html)

JPSelter 30. Jun 2006 11:30


[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.

Waldteufel 30. Jun 2006 12:12

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... ;-)

JPSelter 30. Jun 2006 12:18

Re: Mit Rechtsklick Objekte markieren?
 
Hmmm kann ich leider nichts finden.

JPSelter 30. Jun 2006 12:33

Re: Mit Rechtsklick Objekte markieren?
 
Ah, hab was gefunden:

Delphi-Quellcode:
[in OnMouseMove]
if Button = mbRight then
  begin
    Node := VST1.GetNodeAt(X, Y);
    VST1.Selected[Node] := True;
  end;
Problem ist jetzt aber, er markiert den rechtsklick-Node blau, aber der Fokus (grauer Rahmen) bleibt um den letzten linksklick-Node.

marabu 30. Jun 2006 12:37

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

JPSelter 30. Jun 2006 12:41

Re: Mit Rechtsklick Objekte markieren?
 
OK, habs raus (für andere die dieses Problem irgendwann mal haben werden):

Delphi-Quellcode:
if Button = mbRight then
  begin
    Node := VST1.GetNodeAt(X, Y);
    VST1.FocusedNode := Node;
    VST1.Selected[Node]:=true;
  end;
Man muss beides benutzen und zum Glück lassen beide (FocusedNode und Selected) Get und Set zu.

Hawkeye219 30. Jun 2006 13:08

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 09:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz