Einzelnen Beitrag anzeigen

Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

Fehler in Form.OnMouseWheel (2x und mit wechselndem Shift)

  Alt 26. Jun 2012, 12:08
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:
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;
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 (?!??!?).

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 http://www.delphipraxis.net/59789-on...ufgerufen.html wurde der Doppelaufruf schon erwähnt, aber das mit dem wechselnden ShiftState war damals kein Thema)
  Mit Zitat antworten Zitat