Servus!
Auf meinem Formular befindet sich ein dynamisch erzeugtes TImage, in die eine Bitmap aus der Resourcen-Datei geladen wird. Ich möchte nun beim Anklicken bestimmter Stellen verschiedene Aktionen ausführen, wobei programmbedingt die "Zielfläche" sehr klein ist - um genau zu sein exakt 3x3 Pixel. Bei den ersten Versuchen stellte ich fest, daß die zurückgegebenen Koordinaten erheblich von der Stelle abwichen, an der sich die Cursorspitze befand. In X-Richtung waren es 10, in Y-Richtung 78 Pixel, bzw. Koordinatenpukte, die Differenz scheint aber rechnerabhängig zu sein.
Zur Verdeutlichung mal ein wenig Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Buidl:=TImage.Create(self); with Buidl do begin Parent:=Form1; Left:=5; Top:=30; Width:=1014; Height:=433; Picture.Bitmap.LoadFromResourceName(HInstance,'DIAGRAMM'); end;
with Buidl do begin GetCursorPos(MausPosition); end; |
Das Programm soll auch bei kleinen Bildschirmauflösungen laufen (mit Scrollbalken) und natürlich soll dort auch der Aufruf der Aktionen an der selben Stelle stattfinden. Ich vermute ein wenig, daß GetCursorPos nicht auf das Image, sondern auf Form1 bezogen ist. Kennt sich jemand aus, ob das so ist, oder warum der MausPosition-Wert von der tatsächlichen Cursorstellung abweicht?
Gruß,
Adrian