2016-10-22 5 views
-2

В Delphi, когда я захватываю события MouseWheel для TImage, я обнаружил, что события колеса не создаются поверх моего TImage, а скорее смещены вверх и влево (но меньше). Другими словами, если поместить мышь в правый нижний угол моего TImage, я не получаю никаких событий. Но я делаю события выше и слева от TImage. Кажется, не имеет значения, как я захватываю события. Я попробовал простой захват, добавив свойство OnMouseWheel. Я попытался создать компонент-потомк, подвергая OnMouseWheel. Я попробовал переопределить DoMouseWheel. Я попытался подключить WndProc() и захватить WM_MOUSEWHEEL. Все приводит к тому же.События Delphi MouseWheel в TImage не выровнены

+0

Пожалуйста, продемонстрируйте минимальный код, с помощью которого мы можем воспроизвести проблему, а также [MCVE] (http://stackoverflow.com/help/mcve). –

+0

Добавьте изображение на wincontrol, как панель с одинаковыми размерами, и обработайте колесо на этом элементе управления. Будучи потомком графического контроля, изображение не доставляет никакого прокручивающего сообщения. –

+0

'TImage' - это графический элемент управления, а не оконный элемент управления. Вход мыши принимается первым родительским окном, а затем делегируется самому близкому не оконному ребенку. Таким образом, полученные координаты относительно родителя, а не изображения. Похоже, что родитель не правильно корректирует координаты при делегировании. Но без MVCE никто не может сказать вам, почему это так. –

ответ

-2

Хорошо, это был длинный выстрел. Все остальные оконные функции, похоже, сработали. Я переключил свой компонент на наследование с TCustomControl и добавил функциональность, которая мне нужна от TImage, и все работает намного лучше.

+1

Как это ответить на вопрос? –