Methoden / Ergebnisse Mausposition
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Methoden / Ergebnisse Mausposition
Ich habe festgestellt dass es Mehrere Methoden zur Bestimmung der eigenen Mausposition gibt. Ich musste nun auch feststellen dass diese Methoden unterschiedliche ergebnisse hervorbringen.
Während es bei getcursorpos(P:TPoint) und Mouse.CursorPos.X bzw Mouse.CursorPos.Y als Ursprung die Bildschirmecke dient ist bei Prozeduren die Ecke des Formulars der Ursprung.
Beispielsweise:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Nun wollte ich allerdings ein normales Click-Ereignis nutzen ( nur Sender:Tobject wird übergeben) und trotzdem den Ursprung der Form nutzen und nicht den vom Bildschirm.
Klar kann ich von Formmousemove dauernd x und y bestimmen lassen diese in ne variable schreiben und dann aufrufen wo ich die position benötige. Find ich jedoch etwas hässlich die lösung. Ich denk das geht einfacher und eleganter. Leider weiss ich nur nicht wie.
Während es bei getcursorpos(P:TPoint) und Mouse.CursorPos.X bzw Mouse.CursorPos.Y als Ursprung die Bildschirmecke dient ist bei Prozeduren die Ecke des Formulars der Ursprung.
Beispielsweise:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Nun wollte ich allerdings ein normales Click-Ereignis nutzen ( nur Sender:Tobject wird übergeben) und trotzdem den Ursprung der Form nutzen und nicht den vom Bildschirm.
Klar kann ich von Formmousemove dauernd x und y bestimmen lassen diese in ne variable schreiben und dann aufrufen wo ich die position benötige. Find ich jedoch etwas hässlich die lösung. Ich denk das geht einfacher und eleganter. Leider weiss ich nur nicht wie.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
Re: Methoden / Ergebnisse Mausposition
Die Methoden
ScreenToClient und ClientToScreen
sollten hier weiterhelfen.
ScreenToClient und ClientToScreen
sollten hier weiterhelfen.
-
- Beiträge: 80
- Registriert: Sa 11. Apr 2009, 17:01
- OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
- CPU-Target: 32Bit
Re: Methoden / Ergebnisse Mausposition
das problem hab ich auch.
Wie bindet man das Screentoclient usw. ein?
Wie bindet man das Screentoclient usw. ein?
Dankt monta !!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Methoden / Ergebnisse Mausposition
Was Spricht denn gegen die Verwendung von OnMouseDown ?
MFG
Michael Springwald
Michael Springwald
Re: Methoden / Ergebnisse Mausposition
hendy hat geschrieben:Wie bindet man das Screentoclient usw. ein?
Code: Alles auswählen
procedure TForm1.FormClick(Sender: TObject);
var
P: TPoint;
begin
P := ScreenToClient(Mouse.CursorPos);
ShowMessage(Format('x:%d y:%d', [P.X, p.Y]));
end;
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: Methoden / Ergebnisse Mausposition
Erst mal Dankeschön für die Antworten.
Mich wundert eher wozu
wenn
das gleiche liefert wobei
wohl eher nicht funktionieren dürfte.
OnMouseDown ist zwar ähnlich wie click aber ich glaub es gibt paar (feine) unterschiede wo man anfängt zu drücken und wo man loslässt. Dies aber bitte selber testen.Was Spricht denn gegen die Verwendung von OnMouseDown ?
Mich wundert eher wozu
Code: Alles auswählen
getcursorpos(P)
Code: Alles auswählen
P:=Mouse.Cursorpos;
Code: Alles auswählen
Screentoclient(getcursorpos(P));
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
Re: Methoden / Ergebnisse Mausposition
Mouse.CursorPos ist eine Propertie welche GetCursorPos aufruft.
GetCursorPos ist allerdings eine Procedure und verändert den Parameter P, screenToClient verlangt aber ein Parameter des Types TPoint, welches eine Procedure eben nicht liefern kann.
GetCursorPos ist allerdings eine Procedure und verändert den Parameter P, screenToClient verlangt aber ein Parameter des Types TPoint, welches eine Procedure eben nicht liefern kann.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Methoden / Ergebnisse Mausposition
Ist genau wie OnClick enhält aber als Extra die Maus Position von der Angeklickten Komponente. D.H. wenn du mit der Maus auf ein From Klickst bekommst du die Maus Position, die an der Linken Oberen Ecke im From anfangen geliefert. Dieses Event gibt es bei recht vielen Komponenten. Und wie gesagt: onClick liefert ja nur einen Sender möchtest du aber die Maus Position haben währe onMouseDown eine MöglichkeitOnMouseDown ist zwar ähnlich wie click aber ich glaub es gibt paar (feine) unterschiede wo man anfängt zu drücken und wo man loslässt. Dies aber bitte selber testen.
MFG
Michael Springwald
Michael Springwald