forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Прочие вопросы (http://forum.boolean.name/forumdisplay.php?f=50)
-   -   Двойное нажатие клавиш (http://forum.boolean.name/showthread.php?t=18277)

Fred-boy 21.06.2013 17:45

Двойное нажатие клавиш
 
Здравствуйте, помогите, пожалуйста, написать код для проверки двойных нажатий на кнопки. То есть как на правую кнопку компьютерной мыши два раза кликаешь чтобы открыть файл, так и мне нужно проверить например двойное нажатие на 5. Заранее спасибо)

Igor 21.06.2013 22:55

Ответ: Двойное нажатие клавиш
 
Запоминаешь время и кнопку последнего нажатия и при новом нажатии смотришь разницу. Если меньше 100-200 миллисекунд, то нажатие двойное.

Fred-boy 22.06.2013 20:03

Ответ: Двойное нажатие клавиш
 
Мне кажется за 100 мс не успеют нажать. Но спасибо.

Fred-boy 22.06.2013 20:27

Ответ: Двойное нажатие клавиш
 
Не работает. Проверьте пожалуйста)
Код:

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;


Igor 06.07.2013 01:06

Ответ: Двойное нажатие клавиш
 
При проверке повторного нажатия 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;


И вызывал бы её при проверках нажатий с клавиатуры.

Fred-boy 10.07.2013 14:08

Ответ: Двойное нажатие клавиш
 
Что если так?
Код:

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;



Часовой пояс GMT +4, время: 02:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot