Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Mauskoordinaten relativ zum aktuellen Monitor? (https://www.delphipraxis.net/211749-mauskoordinaten-relativ-zum-aktuellen-monitor.html)

PeterPanino 29. Okt 2022 11:42

Mauskoordinaten relativ zum aktuellen Monitor?
 
Guten Tag! Ich möchte die Maus-Koordinaten relativ zu dem Monitor eruieren, auf dem sich die Maus befindet. Also: X = 0 am jeweiligen linken Bildschirmrand, und Y = 0 am jeweiligen oberen Bildschirmrand.

Beispiel: Wenn der Benutzer 2 Monitore verwendet und der Hauptbildschirm links angeordnet ist:

Delphi-Quellcode:
var
  pt: Winapi.Windows.TPoint;
  CurrentMonitor: Vcl.Forms.TMonitor;
  MouseXOnCurrentMonitor: Integer;

Winapi.Windows.GetCursorPos(pt);
CurrentMonitor := Vcl.Forms.Screen.MonitorFromPoint(pt);

if CurrentMonitor.MonitorNum = 0 then
  MouseXOnCurrentMonitor := pt.X
else
  MouseXOnCurrentMonitor := pt.X - Screen.Width;
Aber vielleicht hat jemand schon das Rad erfunden?

himitsu 29. Okt 2022 12:04

AW: Mauskoordinaten relativ zum aktuellen Monitor?
 
Alle Controls/WinControls haben eine Methode ScreenToClient und ClientToScreen.

Warum MonitorNum=0 ?
Was passiert, wenn du mal 3 Monitore hast?

Der gefundene Monitor gibt dir sein Rect und damit solltest du besser direkt rechnen.



TPoint und TRect haben ein .Offset oder das alte einsame OffsetRect.


PS: FindVCLWindow (falls man nicht eigentlich den Monitor sondern das darauf wissen wollte)
Und auch Forms haben ein Monitor-Property, der das zugehörige Rect gibt.

PeterPanino 29. Okt 2022 12:21

AW: Mauskoordinaten relativ zum aktuellen Monitor?
 
Du meinst also?:

MouseXOnCurrentMonitor := pt.X - CurrentMonitor.BoundsRect.Left;
MouseYOnCurrentMonitor := pt.Y - CurrentMonitor.BoundsRect.Top;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.

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