Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezogen?) (https://www.delphipraxis.net/35830-getcursorpos-und-mouse-cursorpos-x-y-auf-canvas-bezogen.html)

Sadrax 12. Dez 2004 12:33


getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezogen?)
 
Hallo, ich habe in meinen Programm die Canvas in meinen TImage in 9 Teile aufgeteilt (3x3 mit je 100x100 Pixeln).
Nun wollte ich wissen wenn man auf diese Canvas klickt, in welchen Bereich der Klick war.
Ich habe die Prozedur getCursorPos() und die Funktion Mouse.CursorPos.x/y gefunden.
Diese geben ja immer die Position gesehen vom gesamten Bildschirm an.
Deswegen habe ich nun folgenden Quelltext geschrieben:
Code:
...
  getCursorPos(pos);
  x := Pos.X;
  x := x - Form1.Left;
  x := x - (Form1.Width - ClientWidth);
  y := Pos.y;
  y := y - Form1.Top;
  y := y - (Form1.Height - ClientHeight);
...
geht es auch einfacher?
Und noch was, ich habe mit einem Timer immer in 4 Labels die aktuellen x und y Werte einmal mit getCursorPos und einmal mit Mouse.CursorPos ausgelesen, dort standen auch immer die gleichen Werte, aber wenn ich für den Code oben Mouse.CursorPos verwendete bekam ich völlig andere (für mich nicht nachvollziebare) Werte, woran liegt das?

nailor 12. Dez 2004 12:42

Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
 
Zitat:

Die Methode ScreenToClient wandelt die Bildschirmkoordinaten eines bestimmten Punktes in Client-Koordinaten um.

sniper_w 12. Dez 2004 13:00

Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
 
nun ja....versuch´s so:
in einem OnMouseUp event schreibst du so etwas:

posx := (X-a) div width_f;
posy := (Y-a) div width_f;

wo width_f deine beliebige Breute ist (nämlich 100) und a ist 1/2 des abstandes zwitschen 2 Rect´s
also noch einmal:

--a--|---------------width_f---------------|--a----a--|---------------width_f---------------| und so weiter.... das gilt für die y-Axe genauso. und somit weist du wo du geklickt has :o

Sadrax 12. Dez 2004 19:27

Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
 
Danke werde es mal ausprobieren.

dizzy 12. Dez 2004 19:39

Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
 
\\edit: Nö, war falsch :oops:


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