Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mouse absolute Position ermitteln! (https://www.delphipraxis.net/132048-mouse-absolute-position-ermitteln.html)

R2009 5. Apr 2009 08:43


Mouse absolute Position ermitteln!
 
Hi,
hab ein ganz triviales Problem:
ich möchte ein tpicture mit Hilfe des Mauszeigers bewegen.

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  label1.caption:=inttostr(x);
  label2.caption:=inttostr(y);
  image2.Left:=x;
  image2.Top:=y;
end;
klappt auch dganz gut solange ich den Mauszeiger ausserhalb des pictures halte. Wie kriege ich die aktuelle Position des Mauszeiger unabhängig ob der sich jetzt direkt über der Form oder über einem beliebigen Steuerelement befindet.
Ich will die Position immer relativ zur Form.

Danke!

toms 5. Apr 2009 08:47

Re: Mouse absolute Position ermitteln!
 
Hallo, z.B mit der TApplicationEvents Komponente.

Bernhard Geyer 5. Apr 2009 08:55

Re: Mouse absolute Position ermitteln!
 
Die Methoden ScreenToClient und ClientToScreen sind dein Freund ...
Einfach mal in der OH nachschauen.

fui-tak 5. Apr 2009 10:39

Re: Mouse absolute Position ermitteln!
 
Du könntest dir hiermit was zurechtbasteln:

Mouse.CursorPos.X
Mouse.CursorPos.Y

Hier erhälst du die Koordinaten auf dem Bildschirm

himitsu 5. Apr 2009 10:59

Re: Mouse absolute Position ermitteln!
 
Zitat:

Zitat von fui-tak
Hier erhälst du die Koordinaten auf dem Bildschirm

Er möchte sie aber relativ zu seiner Form
und da müßte er dann ebenfalls ScreenToClient nutzen, um es umzuwandeln.

Ich würde hier aber ClientToParent verwenden ... alles Andere wären nur unnötige Umwege.

Delphi-Quellcode:
// Image1 leitet seinen Aufruf an Form1 weiter
Procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  Var P: TPoint;

  Begin
    P.X := X;
    P.Y := Y;
    P := ClientToParent(P, Form1);
    Form1.OnMouseMove(Sender, Shift, P.X, P.Y)
  End;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 Uhr.

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