Einzelnen Beitrag anzeigen

Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#5

AW: Mausposition relativ zum Fenster ermitteln

  Alt 18. Jan 2013, 14:11
Ihr habt beide Recht .

Ich habe ClientToScreen schon ausprobiert, aber mit mäßigem Erfolg...
(bitte entschuldigt, dass ich noch keinen Code gepostet habe, aber das alles gehört zu einem größeren Projekt, und ich weiß gar nicht, wo ich da mit Kopieren anfangen soll und vor allem aufhören muss )

Ich versuche es mal mit diesem Ausschnitt hier:

Delphi-Quellcode:
procedure HandleApplicationEvent(pMsg: TMsg; var Handled: Boolean);
var
   MouseInBrowser: Boolean;
mp: TPoint;
begin

// fensterbezogene Mausposition ermitteln...
if pMsg.message = WM_MOUSEMOVE then begin
   MouseX := LoWord(pMsg.lParam);
   MouseY := HiWord(pMsg.lParam);

mp.x := MouseX;
mp.y := MouseY;
mp := FormDATBrowser20.ClientToScreen(mp);
FormDATBrowser20.Label4.Caption := 'Maus: ('+inttostr(mp.x)+', '+inttostr(mp.y)+')';


                                    end;
Das Problem ist, dass bei diesem Aufruf die Mausposition springt, d.h. falsch ist, wenn ich z.B. von einem Panel auf eine ProgressBar rolle - mit einem Wort: ich kriege so nicht die Bildschirmbezogenen Koordinaten, die ich erwarten würde.

Ist es vielleicht falsch, die Methode ClientToScreen von der Form aufzurufen?
Muss ich <überrollte Komponente>.ClientToScreen aufrufen? Dafür müsste ich die Komponente aber noch irgendwie ermitteln, gel?

Angst...
lg Caps

ps: Zur Antwort "OnMouseOver durch Message getriggert":
Ja, das glaube ich, aber als ich FormDATBrowser.OnMouseOver implementiert habe, gab es nur Aktivität, wenn die Maus direkt über der Form war, war ein Panel dazwischen, war Funkstille - leider keine Lösung für mich. Kann man der Form wie mit KeyPreview vllt. ein allgemeines MessagePreview mitgeben?


Edit: es scheint so, als müsste ich ermitteln, welche Komponente unter der Maus ist. Hm...
Abgesehen davon, dass das natürlich irgendwie schon möglich sein wird - - - gibt's keinen einfacheren Weg? Ich will doch nix weiter als die Mausposition auslesen.
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."

Geändert von Caps (18. Jan 2013 um 14:16 Uhr) Grund: Neue Informationen
  Mit Zitat antworten Zitat