Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Прочие вопросы

Прочие вопросы Вопросы не касающиеся программирования (установка, настройка...)

Ответ
 
Опции темы
Старый 21.06.2013, 13:45   #1
Fred-boy
 
Сообщений: n/a
Двойное нажатие клавиш

Здравствуйте, помогите, пожалуйста, написать код для проверки двойных нажатий на кнопки. То есть как на правую кнопку компьютерной мыши два раза кликаешь чтобы открыть файл, так и мне нужно проверить например двойное нажатие на 5. Заранее спасибо)
 
Ответить с цитированием
Старый 21.06.2013, 18:55   #2
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,217
Написано 436 полезных сообщений
(для 784 пользователей)
Ответ: Двойное нажатие клавиш

Запоминаешь время и кнопку последнего нажатия и при новом нажатии смотришь разницу. Если меньше 100-200 миллисекунд, то нажатие двойное.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 22.06.2013, 16:03   #3
Fred-boy
 
Сообщений: n/a
Ответ: Двойное нажатие клавиш

Мне кажется за 100 мс не успеют нажать. Но спасибо.
 
Ответить с цитированием
Старый 22.06.2013, 16:27   #4
Fred-boy
 
Сообщений: n/a
Ответ: Двойное нажатие клавиш

Не работает. Проверьте пожалуйста)
function get_double_key:integer;
 var time,key:integer;
begin
 key:=getkeyclicked;
 if key<>0 then begin
 time:=getrelativetimems;
 if (getkeyclicked=key) and (getrelativetimems-time<500) then begin
 get_double_key:=key; end;
 else
 get_double_key:=0;
 end;
end;
 
Ответить с цитированием
Старый 05.07.2013, 21:06   #5
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,217
Написано 436 полезных сообщений
(для 784 пользователей)
Ответ: Двойное нажатие клавиш

При проверке повторного нажатия getKeyClicked вызывается только один раз. И оно, скорее всего, будет Ke_none
Я бы написал такую функцию:

var lastTime, lastKey:integer; doubleClick:boolean;
procedure update(int key)
var time:integer
begin
if key<>ke_none then
begin
time:=getRelativeTimeMS;
doubleClick := (time-lastTime<500) and (key=lastkey);
lastTime:=time;
lastKey:=key;
end;
end;


И вызывал бы её при проверках нажатий с клавиатуры.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 10.07.2013, 10:08   #6
Fred-boy
 
Сообщений: n/a
Ответ: Двойное нажатие клавиш

Что если так?
function doublekey(key:integer):boolean;
 var
  time:integer;
 begin
  if key<>0 then
   begin
    time:=getrelativetimems;
    if (getrelativetimems-time<500) and (getkeyclicked=key) then
     doublekey:=true;
    else
     doublekey:=false;
   end;
  end;
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 08:04.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com