![]() |
Fehler in Form.OnMouseWheel (2x und mit wechselndem Shift)
Hallo!
Ich vermute mal schwer hier sitzt in Delphi (überprüft in 2007 und 2010) der Wurm drin. Man erzeuge ein Formular, setzte ein Memo drauf und dann folgenden Code in OnMouseWheel:
Delphi-Quellcode:
Wenn man nun die CTRL-Taste niederhält und die Maus rollt, dann wird OnMouseWheel zweimal aufgerufen (das ist ja schon seltsam), davon der erste mal korrekter weise mit ssCtrl, das zweite mal mit ssShift (?!??!?).
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint; var Handled: Boolean); begin Memo1.Lines.Add(IntToHex(Word(Shift), 4)); if Shift=[ssCtrl] then Memo1.Lines.Add('Ctrl') else if Shift=[ssShift] then Memo1.Lines.Add('Shift'); end; Any ideas was das soll? Man kann zwar handled auf True setzen, dann kommt der zweite Aufruf nicht, aber dann funktioniert unter Umständen das scrollen in irgendwelchen Controls nicht mehr automatisch. (in ![]() |
AW: Fehler in Form.OnMouseWheel (2x und mit wechselndem Shift)
Handled := true;
|
AW: Fehler in Form.OnMouseWheel (2x und mit wechselndem Shift)
Zitat:
Und: Das ist nur ein Workaround und keine Erklärung für das Verhalten. Kann man also sagen dass das ein Fehler in Delphi ist? |
AW: Fehler in Form.OnMouseWheel (2x und mit wechselndem Shift)
|
AW: Fehler in Form.OnMouseWheel (2x und mit wechselndem Shift)
Deine vorletzte Zeile hatte ich übersehen ...
wenn man sich TCustomForm.MouseWheelHandler anschaut und dann dafür sorgt dass kein fokusierbares Element auf dem Form ist ist die Ausgabe wie gewünscht. Ich weiß zwar noch nicht wie, aber FFocusedControl.Perform(... scheint zu dem Problem zu führen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 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