Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Mauskoordinaten mit Mausbewegung herausfinden
Soapy - Fr 28.12.07 16:47
Titel: Mauskoordinaten mit Mausbewegung herausfinden
Also ich habe das Problem, dass ich die Mauskoordinaten herausfinden will.
Es soll automatisch die neuen Koordinaten der Maus in zwei Labels schreiben!
Genau so wie bei Bildbearbeitungsprogrammen, bei denen unten die Koordinaten angezeigt werden!
Mein Versuch sah bis jetzt so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TLineareFunktionen.KoordinatensystemClick(Sender: TObject); var X,Y : Integer; begin x:= ScreenToClient(Mouse.CursorPos).X; y:= ScreenToClient(Mouse.CursorPos).Y; X := X - 8 - (Koordinatensystem.ClientWidth div 2); Y := Y - 67 - (Koordinatensystem.ClientHeight div 2); Label1.Caption := IntToStr(X); Label2.Caption := IntToStr(Y); end; |
Klappt einwandfrei, sollte aber noch automatisch bei einer Mausbewegung und nicht bei einem Mausklick die Koordinaten in die Labels schreiben!
Kann mir da jemand helfen?
DrRzf - Fr 28.12.07 16:50
Schau dir mal die ereignisse
OnMouseMove (reagiert auf bewegung der maus)
OnMouseUp (reagiert auf loslassen der maustaste)
OnMouseDown (reagiert auf drüchen der maustaste)
an
OnMouseWheel reagiert aufs scrollrad.
Regan - Fr 28.12.07 16:53
Dazu noch was: OnMouseLeave (Beim Verlassen).
Soapy - Fr 28.12.07 16:56
Hab ich schon!
Hier ist mal der Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TLineareFunktionen.FormMouseMove(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin x:= ScreenToClient(Mouse.CursorPos).X; y:= ScreenToClient(Mouse.CursorPos).Y; X := X - 8 - (Koordinatensystem.ClientWidth div 2); Y := Y - 67 - (Koordinatensystem.ClientHeight div 2); Label1.Caption := IntToStr(X); Label2.Caption := IntToStr(Y); end; |
Was mach ich falsch?
DrRzf - Fr 28.12.07 19:32
Du benutzt X,Y die bereits in der procedure übergeben werden.
Diese kannste aber nicht ändern da sie nicht als var übergeben werden.
ausserdem könntest du X,y direkt von deiner Form verwenden und bräuchtest dazu auch nicht mehr rummrechnen.
entweder so, dann bekommst die aktuelle position
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TLineareFunktionen.FormMouseMove(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Label1.Caption := IntToStr(X); Label2.Caption := IntToStr(Y); end; |
oder so, wenn du selbst noch mit den koords rechnen willst
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TLineareFunktionen.FormMouseMove(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var MyX,MyY : integer´; begin MyX := X - 8 - (Koordinatensystem.ClientWidth div 2); MyY := Y - 67 - (Koordinatensystem.ClientHeight div 2); Label1.Caption := IntToStr(MyX); Label2.Caption := IntToStr(MyY); end; |
jakobwenzel - Fr 28.12.07 19:57
Wohl kann man die ändern, es wird nur nicht nach außen gegeben. Nur bei Const kann man sie nicht ändern.
Zu erfahren, was nicht geht wäre auch noch schön.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!