Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Welcher MouseButton status? (https://www.delphipraxis.net/94242-welcher-mousebutton-status.html)

EWeiss 18. Jun 2007 17:21


Welcher MouseButton status?
 
Hi

In Vb wird beim FormMouseMove ereignis der status des Button direkt übergeben
bei Delphi leider nicht dort ist es anstelle von Button Sender.

Wie kann ich in erfahrung bringen (übergeben) welcher status der MouseButton zur zeit hat?


Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Var
  Button : TMouseButton;
begin
  ControlMouseMove(Image1, Button, Shift, X, Y)
end;
Hier 'ControlMouseMove' möchte ich dann den übergebenen status auswerten.

Delphi-Quellcode:
procedure ControlMouseMove(aCtrl : TObject;
                           Button : TMouseButton;
                           Shift : TShiftState;
                           X : Integer;
                           Y : Integer);

if Button = mbLeft then
Gruss Emil

xaromz 18. Jun 2007 17:29

Re: Welcher MouseButton status?
 
Hallo,

schau Dir mal die Hilfe zu Delphi-Referenz durchsuchenTShiftState an.

Gruß
xaromz

EWeiss 18. Jun 2007 17:30

Re: Welcher MouseButton status?
 
Zitat:

Zitat von xaromz
Hallo,

schau Dir mal die Hilfe zu Delphi-Referenz durchsuchenTShiftState an.

Gruß
xaromz

OkiDoki ;)

EDIT:
Das hilft mir nicht weiter!

Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
So wie hier ist ja meine procedure aufgebaut..
Da gibt es auch unterschiede zwischen
Delphi-Quellcode:
Button: TMouseButton; Shift: TShiftState
Und so möchte ich den button status übergeben(initialisieren)
Warum ich für den status Button nun Shift verwerten soll ? Keine Ahnung.
Button ist Button und Shift ist Shift. Oder ?


gruss

sirius 18. Jun 2007 17:57

Re: Welcher MouseButton status?
 
:evil: Du sollst es ja mal durchlesen! :warn:

Zitat:

ssShift Die Taste Umschalt wird gedrückt gehalten.
ssAlt Die Taste Alt wird gedrückt gehalten.
ssCtrl Die Taste Strg wird gedrückt gehalten.
ssLeft Die linke Maustaste wird gedrückt gehalten.
ssRight Die rechte Maustaste wird gedrückt gehalten.
ssMiddle Die mittlere Maustaste wird gedrückt gehalten.
ssDouble Es wurde mit der Maus doppelgeklickt.

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssleft in shift then showmessage('Linke Maustaste gedrückt!');
end;

EWeiss 18. Jun 2007 18:14

Re: Welcher MouseButton status?
 
Zitat:

Zitat von sirius
:evil: Du sollst es ja mal durchlesen! :warn:

Zitat:

ssShift Die Taste Umschalt wird gedrückt gehalten.
ssAlt Die Taste Alt wird gedrückt gehalten.
ssCtrl Die Taste Strg wird gedrückt gehalten.
ssLeft Die linke Maustaste wird gedrückt gehalten.
ssRight Die rechte Maustaste wird gedrückt gehalten.
ssMiddle Die mittlere Maustaste wird gedrückt gehalten.
ssDouble Es wurde mit der Maus doppelgeklickt.

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssleft in shift then showmessage('Linke Maustaste gedrückt!');
end;

Wir reden aneinander vorbei.
Und gelesen habe ich es schon ;)

Ich benötige den TMouseButton status und nicht den des TShiftState.

Oder habe ich hier ..
Delphi-Quellcode:
procedure ControlMouseMove(aCtrl : TObject;
                           Button : TMouseButton;
                           Shift : TShiftState;
                           X : Integer;
                           Y : Integer);
den Button als TShiftState deklariert ?

gruss Emil

sirius 18. Jun 2007 18:30

Re: Welcher MouseButton status?
 
Ja und? Willst du programmieren?

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var mb:tmousebutton;
begin
  if ssleft in shift then mb:=mbleft;
  if ssright in shift then mb:=mbright;
  if ssmiddle in shift then mb:=mbmiddle;

  ControlMouseMove(Form1, mb, Shift, X, Y);
end;
Leider verlierst du mit der Variante von TMousebutton Informationen, die in TShiftstate noch enthalten sind. Du weist dann nicht mehr, ob mehrere Tasten gleichzeitig gedrückt wurden. (Aber du gibst ja Shift noch weiter mit)

inherited 18. Jun 2007 18:38

Re: Welcher MouseButton status?
 
Was verstehst du denn unter "Status des Mousebuttons"?

EWeiss 18. Jun 2007 18:48

Re: Welcher MouseButton status?
 
Zitat:

Zitat von inherited
Was verstehst du denn unter "Status des Mousebuttons"?

Hmmm...
Denke mal erklärt sich von selbst.
Oder muss ich das jetzt erklären ?

gruss Emil

EWeiss 18. Jun 2007 18:51

Re: Welcher MouseButton status?
 
Zitat:

Zitat von sirius
Ja und? Willst du programmieren?

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var mb:tmousebutton;
begin
  if ssleft in shift then mb:=mbleft;
  if ssright in shift then mb:=mbright;
  if ssmiddle in shift then mb:=mbmiddle;

  ControlMouseMove(Form1, mb, Shift, X, Y);
end;
Leider verlierst du mit der Variante von TMousebutton Informationen, die in TShiftstate noch enthalten sind. Du weist dann nicht mehr, ob mehrere Tasten gleichzeitig gedrückt wurden. (Aber du gibst ja Shift noch weiter mit)

Jo danke ;)
Extrem umständlich wenn ich bedenke das der Button status bei VB im FormMouseMove ereignis schon enthalten ist.
Um was es mir dabei geht siehe hier http://www.delphipraxis.net/internal...=738660#738660

gruss Emil

sirius 18. Jun 2007 18:57

Re: Welcher MouseButton status?
 
Wieso umständlich?

VB macht genau dasselbe nur eine Funktion weiter vorher. Die Message die von Windows kommt, ist ja bei beiden dasselbe und in der sind die Zustände der Maustasten und dieser "Funktions"-Tasten bitweise in einem integer enthalten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr.
Seite 1 von 2  1 2      

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