У меня есть приложение Delphi с элементом управления TImgView32 (часть Graphics32). Я передаю событие перемещения мыши и нажатия мыши, и это работает. Проблема в том, что всякий раз, когда я использую правую кнопку мыши внутри изображения, когда я отпускаю правую кнопку мыши (все еще в моем изображении — я не выходил за пределы изображения, прежде чем отпустить) — левая кнопка мыши не запускает кнопку, флажок, минимизацию или любые другие события элемента управления. Он выполняет дополнительное событие нажатия кнопки мыши в TImgView32 до тех пор, пока не щелкнет второй раз. Как я могу заставить щелчки мыши перейти к правильному элементу управления, когда мышь больше не находится на моем изображении без двойного щелчка? Я скомпилировал и с XE3, и с 2007, и результат был тот же.
Правая кнопка мыши на изображении отключает события первого щелчка мыши за пределами изображения
Ответы (2)
В качестве быстрого и грязного исправления вы могли бы просто имитировать щелчок левой кнопкой мыши в конце обработки события правой кнопки мыши?
person
Donovan Boddy
schedule
24.11.2012
Поскольку я не обрабатываю события мыши на слоях, а только на изображении, самым простым решением было указать слоям не захватывать события мыши, и тогда эта ошибка не возникает. Насколько мне известно, проблема решена, и я отправил отчет об ошибке.
- person Robert Richter; 26.11.2012
Это оказалось ошибкой в стороннем компоненте, а не в Delphi или его библиотеке VCL. Отчет об ошибке отправлен. Если события мыши захватываются слоем, убедитесь, что изображение или средство просмотра изображений сбрасывает «MouseCapture», но если события нужны только изображению, а не слоям, установите для Layers.MouseEvents значение false в качестве обходного пути.
person
Robert Richter
schedule
25.11.2012
ReleaseCapture
вместо отключения MouseEvents. - person Sertac Akyuz   schedule 23.11.2012