AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Problem bei der Positionsauswertung der Maus
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei der Positionsauswertung der Maus

Ein Thema von chrio89 · begonnen am 12. Sep 2008 · letzter Beitrag vom 14. Sep 2008
Antwort Antwort
chrio89
Registriert seit: 11. Sep 2008
Hi ich hab ein kleines Problem

in meinem Grafikprogramm habe ich ein Bitmap in ein Image geladen
Durch Klicken auf das Image wird jeweils die Position des Cursors gespeichert.
Da man mit GetCursoPpos ja nicht die Position der Maus bezogen zum Image erhält berechne ich diese folgendermaßen:

Delphi-Quellcode:
EckX:=Mouse.CursorPos.X;
EckY:=Mouse.CursorPos.Y;
EckX:=EckX-Form1.Frame21.Left;
EckY:=EckY-Form1.Frame21.Top;
h:=EckX/Form1.Frame21.Image1.Width;
Eckx:=round(h*Bildbreite);
h:=Ecky/Form1.Frame21.Image1.Height;
EckY:=round(h*Bildhoehe);
Dabei tritt nun folgendes Problem auf: die X-Position is jeweils richtig, aber die Y-Position ist verschoben, genauer gesagt liegen die berechneten Punkte weiter Unten als die jeweiligen Stellen, auf die ich geklickt habe.

Meine Vermutung ist jetzt, dass es durch die Titelleiste verschoben wird. Das Formular wird immer als wsMaximized ausgeführt, aber die Mausposition bezieht sich ja auf den Bildschirm?!.

(kann Jemand diese Vermutung bestätigen/wiederlegen???)

Nun habe ich festgestellt, dass wenn ich die Position um +15 Pixel nach Oben verschiebe, das Problem nicht mehr auftaucht.

->kann mir Jemand eine Lösung anbieten,damit die Positionen überinstimmen?

Lösungsidden:
1. Bestimmen der Höhe der Titelleiste(sofern meine Vermutung stimmt)
> Wie kann ich einfach die Höhe der Titelleiste bestimmen um sie dazusurechnen?

2 Gibt es eine Möglichkeit, die Mausposition nur auf das Formular(ohne Titelleiste) oder gar auf das Image zu beziehen?
 
taaktaak

 
Delphi 7 Professional
 
#2
  Alt 12. Sep 2008, 21:36
Mit Image1.ScreenToClient() vielleicht?
Ralph
  Mit Zitat antworten Zitat
marabu
 
#3
  Alt 13. Sep 2008, 08:02
Moin,

beim Ereignis OnMouseDown() der Image-Komponente werden doch schon die Client-Koordinaten mitgeteilt ...

Grüße vom marabu
  Mit Zitat antworten Zitat
chrio89

 
Delphi 7 Personal
 
#4
  Alt 14. Sep 2008, 07:01
Danke Marabu hab das jetzt auf OnMouseDown geändert und andere Kleinigkeiten verbessert und alles funzt perfekt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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