Zitat von
bitsetter:
Du kannst doch allen Komponenten die gleiche MouseMove Prozedur zuweisen.
Das finde ich nicht sehr geschickt...
Zitat von
bitsetter:
Oder du verwendest das Ereignis onMessage der Komponente TApplicationEvents.
Das habe ich jetzt mal gemacht und es funktioniert soweit, dass die Koordinaten ständig aktualisiert werden, egal, worauf der Mauszeiger zeigt. Super!
Das Problem ist aber nun, dass die Koordinaten vom Gesamtbildschirm angezeigt werden und nicht die Koordinaten im Programmfenster, was ich aber bräuchte, um die Hervorhebung an die exakte Stelle zeichnen zu können. Kriegt man das nun auch noch irgendwie hin?
Wenn ich das hier versuche:
Label1.Caption := Format('%d:%d', [Mouse.CursorPos.X-Form1.Left, Mouse.CursorPos.Y-Form1.Top]);
dann stimmen die Werte immer noch nicht exakt. Ich vermute, es muss noch der Fensterrand abgezogen werden, aber das ist mir irgendwie nicht so ganz geheuer. Je nach Systemeinstellung (anderer Windows-Skin, große Schriftarten) wird das dann nachher doch anders berechnet und die Position stimmt nicht mehr. Also wie geht das richtig?