![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() живу в линупсе, просто надо отловить нажатие кнопки мыши по таймеру.
Код:
procedure TForm1.Timer1Timer(Sender: TObject); var Button: TMouseButton; begin if Button=mbright then ..; if Button=mbleft then ..; end; ругается на Button который does not seem to be initialized (кажется, не инициализирован) но оба if отрабатывают каждый раз при проходе по таймеру. в примерах по интернету всё происходит в событиях нажатия на кнопку, при этом если кнопку не отжимать - процедура какбы залипает? как замутить повтор прохода по процедуре я совсем не понял. |
#2
|
||||
|
||||
![]() У формы есть событие MouseDown, вызывается при нажатии на кнопку мыши. Обрабатывай его, таймер не нужен.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
||||
|
||||
![]() Непонятно, зачем нужно следить за мышыной давильней вне родных обработчиков, да и не знаю как там из линукса, а вот под виндами такое лучше с помощью ловушки делать, ну или если таймером, то тогда вот так
Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin if GetAsyncKeyState(VK_LBUTTON) <> 0 then ..; if GetAsyncKeyState(VK_RBUTTON) <> 0 then ..; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
|||
|
|||
![]() в виндах куча вариантов, тут линупс.
в обработчике *MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); сделал цикл: Код:
while Button in [mbleft,mbright] do begin if Button=mbright then ButtonXY:=1; if Button=mbleft then ButtonXY:=2; Timer4.Enabled:=true; Application.ProcessMessages; end; ButtonXY:=0; Timer4.Enabled:=false; пока не нажму клавишу всё норма, как только нажал - цикл залипает и из цикла не выходит, пока не нажму другую клавишу. таймер при этом работает нормально. трабл в условия цикла, непойму почему Button in [mbleft,mbright] не снимается при отжатии кнопки. просто при нажатии кнопки по процедуре MouseDown происходит один проход. Последний раз редактировалось Тимофей Петрович, 30.10.2015 в 10:13. |
#5
|
|||
|
|||
![]() цикл отстой
MouseDown стартует таймер и устанавливает параметры MouseUp останавливает таймер таймер просто работает Последний раз редактировалось Тимофей Петрович, 30.10.2015 в 10:45. |
#6
|
||||
|
||||
![]() Не нужен таймер и цикл, событие будет вызываться каждый раз при нажатии кнопки мыши.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |