MouseWheel Ereignisse werden 3 fach aufgerufen ?

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

MouseWheel Ereignisse werden 3 fach aufgerufen ?

Beitrag von siro »

Windows 7 64Bit
Lazarus 1.6.4

Hallo zusammen,
beim Implementieren des Mausrades in meine Komponente habe ich eine Merkwürdigkeit festgestellt.

Alle 3 MouseWheel Ereignisse, werden 3 fach aufgerufen wenn die Komponente den Focus hat.
Das betrifft also:
OnMouseWheel
OnMouseWheelUp
OnMouseWhheDown


Das habe ich jetzt mit folgende Komponenten probiert:
TButton
TCheckBox
TRadioButton

Für meine Komponente habe ich jetzt die
procedure WMMouseWheel(var Message: TLMMouseEvent); message LM_MOUSEWHEEL;
überschrieben und dann NICHT inherited aufgerufen, dann geht es.
Sobald ich jedoch inherited aufrufe gibts wieder eine 3 fach Auslösung sofern die Komponente den Focus hat.

Man kann jedoch in den OnMouseWheel... Ereignissen die Rückgabevariable "Handled" auf TRUE setzen, dann ist das Problem beseitigt.

Leider komme ich da aber nicht ran von meiner Kompontne aus. So bleibt mir nur
die WheelMessage selbst abzufangen und dann nicht inherited aufzurufen.

procedure WMMouseWheel(var Message: TLMMouseEvent); message LM_MOUSEWHEEL;
begin
message.result:=1; // sonst gibt es Mehrfachauslöusng
// inherited; // darf nicht mehr aufgerufen werden.
end.

Leider kann so aber der Nutzer nicht mehr das OnMouseWheel Ereignis behandeln.

Testprojekt:
TestWheel.zip
(127.25 KiB) 50-mal heruntergeladen


Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wp_xyz
Beiträge: 3253
Registriert: Fr 8. Apr 2011, 09:01

Re: MouseWheel Ereignisse werden 3 fach aufgerufen ?

Beitrag von wp_xyz »

Mit Laz 1.6.4 kann ich das bestätigen. Aber in Laz 1.8 RC4 ist das behoben, der Zähler läuft schön in Einer-Schritten hoch.

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: MouseWheel Ereignisse werden 3 fach aufgerufen ?

Beitrag von siro »

Oh supi, ich danke Dir wp_xyz fürs probieren,
dann lad ich mir mal die neue Version runter.

...Minuten später:
Mit der neuen Version v1.8.0 RC4 läuft es jetzt einwandfrei.
So schnell geht das und ich hab gestern wie wild in meiner Software gesucht..... 8)

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten