Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi onMouseWheel-Ereignis nur einmal (https://www.delphipraxis.net/20022-onmousewheel-ereignis-nur-einmal.html)

himitsu 12. Apr 2004 17:32


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.

MrKnogge 12. Apr 2004 17:40

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.

Markus K. 12. Apr 2004 17:41

Re: onMouseWheel-Ereignis nur einmal
 
Hallo himitsu,
vielleicht hilft dir die Eigenschaft WheelAccumulator weiter.
Delphi-Quellcode:
begin
     WheelAccumulator:=1;
end;
Tschüß Markus

himitsu 12. Apr 2004 17:50

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.

MrKnogge 12. Apr 2004 18:07

Re: onMouseWheel-Ereignis nur einmal
 
man kann doch bestimmt herausfinden, wieviele Schritte pro Scrolleinheit ausgeführt werden sollen.

Markus K. 12. Apr 2004 18:10

Re: onMouseWheel-Ereignis nur einmal
 
Hier ist noch eine andere Variante von mir.
Delphi-Quellcode:
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;
Tschüß Markus

himitsu 12. Apr 2004 18:11

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.

himitsu 12. Apr 2004 18:19

Re: onMouseWheel-Ereignis nur einmal
 
Jo, das hilft,

aber bei mir reicht es schon zu, wenn ich nur
Delphi-Quellcode:
Handled := True;
in die Prozedur aufnehme.

Die If-Abfrage brauch ich nicht, es geht auch so.



Also Danke für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz