Ich habe ein Miniproblem mit der Funktionalität OnMouseMove:
Das ist kein Fehler oder Ähnliches, das ist bei Delphi 6 auch so, ich benötige es jedoch etwas anders:
Wenn die linke Maustaste gedrückt ist, wird IMMER OnMouseMove beim Bewegen der Maus aufgerufen,
auch wenn ich den Clientbereich der Komponente verlasse.
Wenn ich die rechte Maustaste drücke, wird OnMOuseMove NUR aufgerufen,
wenn ich mich innerhalb des Clientbereichs bewege.
Die Frage: Wie kann ich das ändern, dass auch bei mbRight IMMER MouseMove aufgerufen wird,
auch wenn ich mich außerhalb des Clientbereichs befinde.
Ich habe schon die Methode
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
überschrieben
und die Message abgefangen:
procedure WMMouseMove(var Message:TLMMouseMove); message LM_MOUSEMOVE;
aber das hilft leider nicht.
-------------------------
Zum Testen einfach ein Panel aufs Formular setzen und bei Ereignisse vom Panel auf OnMouseMove doppelt klicken un den Code eingeben:
Code: Alles auswählen
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
caption:=IntToStr(x);
end;
Programm starten:
Mauscursor ins Panel bewegen. linke Maustaste drücken und festhalten.
Wird nun die Maus, bei gedrückter linker Taste bewegt, erscheint die X-Korodinate in der Beschriftung des Formulars.
Hier funktioniert es auch wenn ich mit der Maus den Bereich des Panels verlasse.
Nun das Gleich mit der rechten Maustaste.
Erst wieder mit der Maus ins Panel, dann rechte Maustaste drücken und festhalten.
Bewege ich die Maus, bei gedrückter rechten Taste, außerhalb des Panels, wird kein MouseMove mehr aufgerufen.
Die x Koordinate wird nicht mehr angezeigt. (L E I D E R
Siro