Как остановить многократное нажатие клавиши?
Имеется приложение вывода графики ститистики.
К примеру имеется горячая клавиша F5, которая вызывает
функцию рисования графика на канве формы.
Так вот если я нажимаю 4 раза или 6 раз подряд, или просто держу
клавишу F5 в течение нескольких секунд, то функция рисования графика рисует этот график многократно 4,6 или более раз без остановки. Нажатие клавиши F2 перехватывает ApplicationEvents.
Как можно решить данную проблему, чтобы вследствие многократного нажатия клавиши, график рисовался всего один раз.
Может быть есть такая функция, которая обнуляет многократное нажатие клавиши F5?
при нажатии включай таймер, и только при его истечении снова обрабатывай нажатие
Цитата: santey
Кто-нибудь подскажет как можно решить данную проблему.
Имеется приложение вывода графики ститистики.
К примеру имеется горячая клавиша F5, которая вызывает
функцию рисования графика на канве формы.
Так вот если я нажимаю 4 раза или 6 раз подряд, или просто держу
клавишу F5 в течение нескольких секунд, то функция рисования графика рисует этот график многократно 4,6 или более раз без остановки. Нажатие клавиши F2 перехватывает ApplicationEvents.
Как можно решить данную проблему, чтобы вследствие многократного нажатия клавиши, график рисовался всего один раз.
Может быть есть такая функция, которая обнуляет многократное нажатие клавиши F5?
Имеется приложение вывода графики ститистики.
К примеру имеется горячая клавиша F5, которая вызывает
функцию рисования графика на канве формы.
Так вот если я нажимаю 4 раза или 6 раз подряд, или просто держу
клавишу F5 в течение нескольких секунд, то функция рисования графика рисует этот график многократно 4,6 или более раз без остановки. Нажатие клавиши F2 перехватывает ApplicationEvents.
Как можно решить данную проблему, чтобы вследствие многократного нажатия клавиши, график рисовался всего один раз.
Может быть есть такая функция, которая обнуляет многократное нажатие клавиши F5?
Для простоты картины можно завести переменную допустим bool key = false;
при нажатии на F5 переводишь key = true; предварительно проверяя на условие if (!key) {...}, если удовлетворяет то переводишь key = true, рисуешь на канве, включаешь таймер, а в таймере переводишь key = false; Timer->Enabled = false;
чтото типа того.
Если подходит по задаче, можно завести булевскую переменную, хранящую "обновлялся ли график на экране с момента последнего изменения данных", обновлять только при изменении входных данных и обойтись безо всяких таймеров.
Очевидно лучшим выходом была бы какая-нибудь функция обнуляющая очередь нажатий клавиши, то тогда захода в обработчик вообще не было, но что-то такой функции не нашел.
Да через таймер попробовал, довольно таки неплохое решение, можно сразу ряд кнопок блокировать на многократное нажатие.