Entwickler-Ecke
Sonstiges (Delphi) - Maus position in der Form/ im Image bestimmen
$ebbi - Mi 03.11.10 16:26
Titel: Maus position in der Form/ im Image bestimmen
Hi,
ich würd gerne die Mausposition in einer Form/ einen Image bestimmen. Bisher nimmt er bei mir aber immer den ganzen Bildschirm. Wie kann ich das nur auf die Form beschränken, also das in der linken oberen Ecked der Form 0,0 ist?
ALF - Mi 03.11.10 16:36
Liefern die Ereignisse onMouseMove, onMouseDown usw nicht die x,y Koordinaten der Mouse?
Gruss ALf
$ebbi - Mi 03.11.10 16:42
ALF hat folgendes geschrieben : |
Liefern die Ereignisse onMouseMove, onMouseDown usw nicht die x,y Koordinaten der Mouse?
Gruss ALf |
ja aber dann müsst ich klicken oder und dass soll eben nicht gemacht werden
ALF - Mi 03.11.10 16:44
Schau doch mal bei onMouseMove rein :wink:
Gruss Alf
$ebbi - Mi 03.11.10 16:49
ALF hat folgendes geschrieben : |
Schau doch mal bei onMouseMove rein :wink:
Gruss Alf |
merci :D
ALF - Mi 03.11.10 16:57
Wenn Du mehrere Objekte dem gleichen Ereigniss zuordnest, in diesem Fall OnMouseMove, kannst Du über den Sender erfahren auf welchem Objekt Du gerade bist.
Nur so als Tipp. :wink:
Gruss ALf
beastofchaos - Fr 24.12.10 18:54
$ebbi hat folgendes geschrieben : |
ich würd gerne die Mausposition in einer Form/ einen Image bestimmen. Bisher nimmt er bei mir aber immer den ganzen Bildschirm. Wie kann ich das nur auf die Form beschränken, also das in der linken oberen Ecked der Form 0,0 ist? |
Es hat noch keiner geklärt, wie man die Mausposition in dem Form bestimmt, sondern nur in welcher procedure/ auf welche Weise man sie lesen kann :)
Mein Problem ist in meinem Minigolfprogramm, dass ich eine Linie von der kugel zur Maus malen will.
Da er die Position der Maus von dem ganzen Bildschirm liest, muss ich folgende Formeln jedesmal benutzen und auch dann ist es sehr ungenau je nach Bildschirmgröße*:
"x:=Mouse.CursorPos.x - Form1.Left;
y:=Mouse.CursorPos.y - Form1.Top;"
*Bei meinem 24-Zoll-Bildschirm zuhause muss ich bei x "-29" und bei y "-8" an die Rechnung anhängen. In der Schule ist es, glaube ich, deshalb weniger, da wird dort nur 18-Zoll-Bildschirme haben. Kennt ihr eine Formel, die vll ungefähr so lautet: "x:=Form1.CursorPos.x;"
MfG Thomas
jaenicke - Fr 24.12.10 19:13
Benutze einfach ScreenToClient von der Komponente, auf die du die Koordinaten beziehen willst. ;-)
beastofchaos - Sa 25.12.10 02:37
jaenicke hat folgendes geschrieben : |
Benutze einfach ScreenToClient von der Komponente, auf die du die Koordinaten beziehen willst. ;-) |
Wie muss ich das benutzen, als Funktioon?
Also:
Delphi-Quelltext
1:
| x:=ScreenToClient(Mouse.CursorPos.X); |
-> Das geht bei mir nämlich nicht wegen:
Zitat: |
[Error] Unit1.pas(95): Incompatible types: 'TPoint' and 'Integer' |
edit1:
Hab mich mal erkundigt und habs verstanden, danke für die Hilfe. sieht jetzt so bei mir aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| Maus=TPoint; . . . Maus:=ScreentoClient(Mouse.CursorPos); x:=Maus.x; y:=Maus.y; |
Moderiert von
Narses: Delphi-Tags hinzugefügt
Delete - Sa 25.12.10 02:40
Dann guck dir mal den Datentyp TPoint in der Hilfe an.
beastofchaos - Sa 25.12.10 03:18
Hab ich ja jetzt schon. Geht das auch mit ScreenToImage2 oder etwas öhnliches. Also, dass ich eine Linie nur erzeuge, wenn die Maus in diesem Bereich des Forms ist?
jaenicke - Sa 25.12.10 03:19
beastofchaos hat folgendes geschrieben : |
Hab ich ja jetzt schon. Geht das auch mit ScreenToImage2 oder etwas öhnliches. |
:roll:
jaenicke hat folgendes geschrieben : |
Benutze einfach ScreenToClient von der Komponente, auf die du die Koordinaten beziehen willst. ;-) |
Wenn du da (wie du gepostet hast) die Methode des Formular nimmst, beziehen sich die Koordinaten eben auch darauf. :nixweiss:
platzwart - Sa 25.12.10 13:03
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| Maus=TPoint; . . . Maus:=Image2.ScreentoClient(Mouse.CursorPos); x:=Maus.x; y:=Maus.y; |
Wenn du das nicht explizit angibst, bezieht sich alles auf dein Hauptformular.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!