Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2014, 17:05   #1
gaziev
Новичок
Джуниор
 
Регистрация: 28.09.2014
Сообщений: 2
Вопрос как не при нажатии а при удержании...

как не при нажатии а при удержании кнопки отрабатывала процедура? возможно ли так сделать? или чем можно заменить кнопку, но надо чтобы была возможность вставить картинку, и и при нажатии она скрывалась а при отпускании опять появлялась
gaziev вне форума Ответить с цитированием
Старый 28.09.2014, 17:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну удержание например можно отследить в таймере (или в доппотоке) функцией GetAsyncKeyState()
Кажись если вернет число меньше нуля - значит нажата и удерживается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2014, 20:04   #3
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Можно без потоков и таймеров. Запоминаем последний Key и TickCount. При следующем срабатывании сравниваем Key, и смотрим сколько прошло времени. При зажатой клавише время будет по моему около 1 десятой секунды. Человек так быстро нажать не сможет. Значит клавиша была зажата.
indexx вне форума Ответить с цитированием
Старый 28.09.2014, 22:39   #4
StriderX
Форумчанин
 
Регистрация: 21.04.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от indexx Посмотреть сообщение
Можно без потоков и таймеров. Запоминаем последний Key и TickCount. При следующем срабатывании сравниваем Key, и смотрим сколько прошло времени. При зажатой клавише время будет по моему около 1 десятой секунды. Человек так быстро нажать не сможет. Значит клавиша была зажата.
"Около 1 десятой секунды" - лютое решение. Еще можно написать ShiftKeyPressed := Random(2) = 1.
Если вы топчитесь на событиях, ну так и взводите\сбрасывайте флаги по событиям: KeyDown, KeyUp, WindowActivate\Deactivate.
Если запустили цикл процессов (таймер, onidle, поток), то считывайте сразу через GetAsyncKeyState. Хотя никто не мешает и процессам генерировать события.
StriderX вне форума Ответить с цитированием
Старый 29.09.2014, 10:42   #5
gaziev
Новичок
Джуниор
 
Регистрация: 28.09.2014
Сообщений: 2
По умолчанию

А можете сделать готовый проект? Самый простой, чтобы оно работало. Хочу сделать так чтобы при нажатии кнопки начал считать счётчик, а при отпускании переставал)
gaziev вне форума Ответить с цитированием
Старый 29.09.2014, 10:58   #6
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Обрабатывый keydown, keyup. Писать за тебя тут ни кто не будет.
indexx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение при наведении и при нажатии Danik25 HTML и CSS 0 11.02.2014 18:38
Вывод календаря при удержании курсора мыши на текстбоксе Blame Microsoft Office Excel 4 02.05.2012 17:18
C++ Как выйти из цикла при нажатии enter? Seede1 Помощь студентам 2 06.12.2011 14:50
Как менять текст при нажатии кнопки Grots Помощь студентам 4 06.09.2011 16:38
ормируется объект размером 30х30 и он должен при нажатии на клавишу,двигаться в 8ми направлениях..а при н Krasoto4ka Помощь студентам 0 22.05.2010 17:41