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)