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 MouseUp Event mit gedrückter rechter Maustaste (https://www.delphipraxis.net/211806-mouseup-event-mit-gedrueckter-rechter-maustaste.html)

Alex_ITA01 4. Nov 2022 08:41

MouseUp Event mit gedrückter rechter Maustaste
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich habe folgendes festgestellt.

Linke Maustaste gedrückt halten auf einem Button führt zum MouseDown.
Linke Maustaste auf dem Button oder irgendwo anders loslassen (auf der Form oder außerhalb der Anwendung) führt zum MouseUp.

Rechte Maustaste gedrückt halten auf einem Button führt zum MouseDown.
Rechte Maustaste auf dem Button oder irgendwo anders loslassen (auf der Form oder außerhalb der Anwendung) führt NICHT zum MouseUp.

Gibt es da eine Möglichkeit, dass das MouseUp auch bei gedrückter rechter Maustaste kommt, wenn die Komp mit der Maus eigentlich "verlassen" wurde?

BerndS 4. Nov 2022 11:00

AW: MouseUp Event mit gedrückter rechter Maustaste
 
Das geht mit SetCapture/ReleaseCapture.
Delphi-Quellcode:
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = TMouseButton.mbRight then
    SetCapture(sbx1.Handle);
  ...
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = TMouseButton.mbRight then
    ReleaseCapture;
  ...
end;

Michael II 4. Nov 2022 11:12

AW: MouseUp Event mit gedrückter rechter Maustaste
 
Ja du kannst WM_RBUTTONUP abfangen. Dann klappt es wie du es wünschst; also entweder durch einen eigenen Handler oder via TApplicationEvents:

Delphi-Quellcode:
procedure TForm17.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
    if Msg.message = WM_RBUTTONUP then
        showmessage( 'hallo' );
end;

Tipp: Wenn du alle Mausmeldungen abfangen willst, wenn zum Beispiel wieder mal was mit der Maus nicht so funktioniert wie du es gern hast und du mal sehen willst, was alles an WM_Maus ankommt:

Delphi-Quellcode:
procedure TForm17.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
      if ( Msg.message >= WM_MOUSEFIRST ) and ( Msg.message <= WM_MOUSELAST ) then
      begin
...
      end;
end;

Alex_ITA01 4. Nov 2022 11:31

AW: MouseUp Event mit gedrückter rechter Maustaste
 
SetCapture und ReleaseCapture kannte ich gar nicht. Danke.
Sollte man das dann nicht auch beim linke Maustaste nutzen oder wirklich nur bei der rechten?

BerndS 4. Nov 2022 12:11

AW: MouseUp Event mit gedrückter rechter Maustaste
 
Für die Linke Taste hat die Vcl das im TButtonStyleHook schon so drin.
Die Frage ist, warum nicht auch für die rechte und mittlere Maustaste?

Alex_ITA01 4. Nov 2022 12:15

AW: MouseUp Event mit gedrückter rechter Maustaste
 
Danke, wieder was dazu gelernt ;-)

himitsu 4. Nov 2022 12:25

AW: MouseUp Event mit gedrückter rechter Maustaste
 
Links ist/war für Drag&Drop nötig.


SelectionChange ist oft auch nur für Links drin, aber beim Kontextmenü an Listen fehlt es.

Benmik 4. Nov 2022 13:29

AW: MouseUp Event mit gedrückter rechter Maustaste
 
Zitat:

Zitat von Michael II (Beitrag 1514306)
Tipp: Wenn du alle Mausmeldungen abfangen willst, wenn zum Beispiel wieder mal was mit der Maus nicht so funktioniert wie du es gern hast und du mal sehen willst, was alles an WM_Maus ankommt:
Delphi-Quellcode:
procedure TForm17.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
      if ( Msg.message >= WM_MOUSEFIRST ) and ( Msg.message <= WM_MOUSELAST ) then
      begin
...
      end;
end;

Das ist mal ein guter Tipp! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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