![]() |
onMouseWheel-Ereignis nur einmal
Moin ihr Wissenden.
Also ich verwende mal wieder dieses nette, im Form eingebaute Mausereignis für's Scrollrad und "leider" wird ja das Ereignis immer mehrmals aufgerufen. Also je nachdem, was in Windows/Maustreiber eingestellt ist (bei mir jeweils 3-mal pro Scrolleinheit, oder wie man das nennt). Ich möchte das Scrollrad aber nicht zum Scrollen verwenden, wo dieses Verhalten ja nicht so stört, sondern zum weiterschalten eines Zählers. und da macht sich das nicht so gut. Und nun meine Frage: Wie kann ich es also anstellen, so dass das Ereignis nur einmal aufgerufen wird, oder wie man das sonst noch beheben kann? Ich könnte das ja über einen internen Zähler beheben, aber das Intervall zum Auslösen des Ereignisses von Hand einzustellen ist auch nicht Ideal. |
Re: onMouseWheel-Ereignis nur einmal
du zählst ne variable hoch, ist diese bei 3 angelangt setzt du sie wieder auf 0 und deinen Zähler um eins hoch.
|
Re: onMouseWheel-Ereignis nur einmal
Hallo himitsu,
vielleicht hilft dir die Eigenschaft WheelAccumulator weiter.
Delphi-Quellcode:
Tschüß Markus
begin
WheelAccumulator:=1; end; |
Re: onMouseWheel-Ereignis nur einmal
WheelAccumulator hilft leider auch nichts - es ändert sich nichts.
@MrKnogge: Das könnte ich ja machen, aber wenn das Programm z.B. auf 'nem anderen Rechner, also mit 'nem anderen Wert im Treiber/Windows läuft, dann stimmt es beim Zählen nicht mehr. |
Re: onMouseWheel-Ereignis nur einmal
man kann doch bestimmt herausfinden, wieviele Schritte pro Scrolleinheit ausgeführt werden sollen.
|
Re: onMouseWheel-Ereignis nur einmal
Hier ist noch eine andere Variante von mir.
Delphi-Quellcode:
Tschüß Markus
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if Handled=False then begin Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+1); Handled:=True; end; end; |
Re: onMouseWheel-Ereignis nur einmal
Ich könnte ja über die Zeit messen, wieviele Schritte gemacht werden - also so lange zählen, bis mal 'ne größere Pause zwischen den Aufrufen ist, aber dann geht die Funktion nicht von Anfang an richtig.
Deshalb hoffe ich ja, dass es eine bessere Möglichkeit gibt. |
Re: onMouseWheel-Ereignis nur einmal
Jo, das hilft,
aber bei mir reicht es schon zu, wenn ich nur
Delphi-Quellcode:
in die Prozedur aufnehme.
Handled := True;
Die If-Abfrage brauch ich nicht, es geht auch so. Also Danke für die Hilfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz