Я пытаюсь привести в порядок свой код теперь, когда Delphi XE2 доступен - мой код датируется Borland Pascal 7, так что есть много «старых» (но работающих!) Методов Win32, и, естественно, я также имею в виду независимость от платформы. Поддержка колесика мыши появилась здесь с несколькими предыдущими вопросами 1 2 и 3 . Как и в случае некоторых из этих ответов, мое собственное решение - это простой перехват сообщений мыши с использованием компонента TApplicationEvents:
procedure TForm6.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
procedure ProcessMouseWheelMessage;
begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
If Integer(Msg.wParam) > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;
Handled := False;
end;
begin
Case Msg.message of
WM_MOUSEWHEEL :
ProcessMouseWheelMessage;
end;
end;
Я пересмотрел этот код сегодня, потому что «Msg.wParam» теперь является NativeInt, что исключает использование отрицательных значений Msg.wParam в приведенном выше коде, если вы не используете Integer (Msg.wParam). Это заставило меня заметить, что я не видел действительно определенного использования колеса мыши для кода Delphi - ужасно, когда у всех мышей теперь есть колеса, и Delphi снова находится на «переднем крае»! Я бы ожидал свойство, компонент или какое-то другое, более «раскрытое» решение, а как насчет поддержки колеса Fire Monkey?
Продолжаю ли я решение или есть лучший способ?