Canvas и кнопки мыши

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Canvas и кнопки мыши

Сообщение Art » 28.01.2022 18:14:44

Lazarus 2.0.12, OS Win7
Вся программа состоит только из формы и процедур mouseUp, mouseDown и mouseMove.

Если для рисования линии очень быстро переместить мышь с левой кнопкой мыши за пределы канвы, то рисует нормально до края. Если же это делать с правой кнопкой, то рисуется короткая линия, заканчивающаяся далеко от края канвы.
И ещё.
Если отпустит левую кнопку за пределами канвы - mouseUp срабатывает, а для правой кнопки - нет.

Подскажите, пожалуйста, как упросить правую кнопку работать аналогично левой.
Описание в сети подобного поведения мыши мне найти не удалось.
Art
незнакомец
 
Сообщения: 4
Зарегистрирован: 28.01.2022 17:45:44

Re: Canvas и кнопки мыши

Сообщение Sharfik » 28.01.2022 20:21:57

Для начала проверить саму мышку и драйвера от нее. У одной сотруднице на работе недавно мышка в Excel делала Turbo Fire, потому что микрик на плате кнопки износился. Перепаял и все стало как из магазина работать.
PS: Переключить мышь на режим для левши, посмотри как будет работать.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 769
Зарегистрирован: 20.07.2013 01:04:30

Re: Canvas и кнопки мыши

Сообщение Art » 29.01.2022 12:57:02

Sharfik, спасибо.
Поменял в настройках ОС назначения кнопок мышки - проблема теперь стала на левой кнопке.
Поменял несколько мышек - всё то же
Art
незнакомец
 
Сообщения: 4
Зарегистрирован: 28.01.2022 17:45:44

Re: Canvas и кнопки мыши

Сообщение Sharfik » 02.02.2022 18:49:58

Art писал(а):Sharfik, спасибо.
Поменял в настройках ОС назначения кнопок мышки - проблема теперь стала на левой кнопке.
Поменял несколько мышек - всё то же

Значит точно программная проблема.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 769
Зарегистрирован: 20.07.2013 01:04:30

Re: Canvas и кнопки мыши

Сообщение Art » 04.02.2022 21:05:26

Ещё упростил код для эксперимента - одна процедура FormMouseDown и в ней строка Caption:=IntToStr(X);
Больше ничего нет.
Если катать мышку без нажатых кнопок или с нажатыми правой или средней, то пишет координаты, не выходящие за размеры формы. Если же нажать левую кнопку то пишет координаты и при перемещении за форму.
Попробовал совсем свежую версию Lazarus - проблема осталась.
Просьба, у кого найдётся время, обратите внимание на ваши программы, может ещё у кого-нибудь есть похожая ситуация.
Art
незнакомец
 
Сообщения: 4
Зарегистрирован: 28.01.2022 17:45:44

Re: Canvas и кнопки мыши

Сообщение WAYFARER » 04.02.2022 22:16:10

Art писал(а):Если катать мышку без нажатых кнопок или с нажатыми правой или средней, то пишет координаты, не выходящие за размеры формы. Если же нажать левую кнопку то пишет координаты и при перемещении за форму.

Это нормальное поведение по-умолчанию. Захватывается только основная кнопка мыши. После выхода за пределы компонента событие MouseLeave не наступит, так как не придет месседж/сигнал об этом пока не будет отжата основная кнопка(впрочем оно не наступит и потом, до самого возвращения мыши на форму). Таким образом координаты будут ловиться по всему экрану вне зависимости от того, что находится под курсором мыши, а так же сработает событие MouseUp когда кнопка будет отпущена.
В случае с остальными кнопками - за пределами компонента мышка "потеряется", наступит событие MouseLeave.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 521
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Canvas и кнопки мыши

Сообщение Art » 08.02.2022 16:48:31

WAYFARER, спасибо.
Тогда появился другой вопрос.
Как-то можно правую кнопку мыши заставить работать как и левая, например программно?
Art
незнакомец
 
Сообщения: 4
Зарегистрирован: 28.01.2022 17:45:44

Re: Canvas и кнопки мыши

Сообщение WAYFARER » 09.02.2022 00:09:50

Art, ты лучше напиши подробнее что именно ты пытаешься сделать, так проще будет что то посоветовать.

Но вообще в целом как вариант можно попробовать обрабатывать событие на TForm, на котором расположен компонент на котором рисуешь, тогда мышь теряться не должна (это справедливо для *nix систем, думаю и для Windows будет так же).
Еще как вариант менять кнопки местами по нажатию. Или использовать хуки.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 521
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Canvas и кнопки мыши

Сообщение Sharfik » 18.02.2022 14:31:47

Art писал(а):Как-то можно правую кнопку мыши заставить работать как и левая, например программно?

Было кучу статей под Delphi на тему прехвата нажатия клавишь нажатых в системе и их эмуляции.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 769
Зарегистрирован: 20.07.2013 01:04:30


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru
cron