Einzelnen Beitrag anzeigen

Benmik

Registriert seit: 11. Apr 2009
543 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Einstellung Scrollen Zeilen

  Alt 26. Mär 2019, 18:02
Vielen Dank, Peter. Diesen Trick kannte ich schon, hatte ihn aber völlig vergessen. Merke ich mir hoffentlich für das nächste Mal.

Eine Verzögerung brauche ich dennoch, weil ich nicht nur den "Nachlauf" verhindern möchte, sondern anstrebe, dass pro Mausradbetätigung nur einmal das Bild gewechselt wird, so dass man nicht dauernd aufpassen muss, nicht zuviel zu drehen.

Ich habe jetzt von den Nachrichten ganz Abschied genommen und das Ganze in OnMouseWheel verlagert (BeimRollen ist eine globale Variable, auch verpönt, ich weiß):
Delphi-Quellcode:
procedure TFrmSB.AnzeigeMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var Richtung:integer; GTC:Cardinal;
begin
  Richtung := IfThen(WheelDelta = 0,-1,1);
  If BeimRollen then
  begin
    Handled := True;
    exit;
  end;
  BeimRollen := True;
  GTC := GetTickCount;
  Try
    If Richtung = 1 then
      SetzeNächstesBild(bwVor) else
      SetzeNächstesBild(bwZurück);
    While (GetKeyState(VK_CONTROL) >= 0) and (GetTickCount < (GTC + 250)) do
      Application.ProcessMessages;
  Finally
    BeimRollen := False;
  end;
end;
Das macht genau, was ich will.
  Mit Zitat antworten Zitat