Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 572

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Подскажите пжлста как можно отловить нажатие клавиши(или сочетания клавиш) в течении определенного времени? Например, если в течении 2х секунд 2 раза нажали клавишу F5, то вылазиет спец.окно.

Заранее спасибо!

Muratov Radik Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Muratov Radik (статус: Посетитель)
Вопрос отправлен: 10 сентября 2010, 10:31
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Muratov Radik!
Все делается просто и примитивно. Заводим себе флажок. лучше его сделать приватным полем формы

private
  flag:LongInt;
где нибудь в FormCreate обнуляем его.
flag :=0;
А теперь прописываем реакцию на нажатие кнопки.
var curr:LogInt;
begin
  // здесь нужно вставить проверку, что нажата именно наша спецклавиша
  curr := GetTickCount;//кол-во миллисекунд от старта системы
  if flag = 0 then begin // это первое нажатие
    flag := curr;
    exit;
  end;
  if curr - flag < 2000 then begin //если разница между текущим нажатием и предыдущим составляет меньше 2 секунд
    // здесь вставить обработку ситуации - клавиша нажата дважды за 2 секунды.
  end 
  // а сюда попадаем, если клавиша была нажата с большим интервалом.
  flag := 0; 
end;

конечно, нужно дополнить код, что бы он отслеживал, что нажата именно та самая клавиша, но я думаю справитесь:)

И обратите внимание - никаких таймеров!

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 10 сентября 2010, 10:47
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 10 сентября 2010, 11:41; участников в обсуждении: 2.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 10 сентября 2010, 10:36 [#1]:

Так по таймеру, OnKeyPress.
Но я бы не советовал делать подобные штуки.

10 сентября 2010, 11:27: Вопрос перемещён из тематического раздела Delphi » Работа с компонентами и библиотеками в раздел Delphi » Взаимодействие с Windows модератором Ерёмин А.А.

Muratov Radik

Muratov Radik (статус: Посетитель), 10 сентября 2010, 11:41 [#2]:

Тов. Женька:

А почему не советовали бы?

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:32
Выполнено за 0.03 сек.