Blue
Red
Green
Orange
Voilet
Slate
Dark

在FormKeyDown事件中怎样做到一直按着某一键,而事件只执行一次?(100)

  • 主题发起人 yong2000
  • 开始时间
Y

yong2000

Unregistered / Unconfirmed
GUEST, unregistred user!
在FormKeyDown事件中怎样做到一直按着某一键(如回车键),过几秒放开,而FormKeyDown中的程序只执行一次,以后几次按下几秒还是执行一次。能否提供演示代码?
 
O

onyliu

Unregistered / Unconfirmed
GUEST, unregistred user!
FormKeyPress ??
 
Y

yong2000

Unregistered / Unconfirmed
GUEST, unregistred user!
To onyliu:FormKeyPress也一样,一直按着时,会反复执行FormKeyPress中写的程序。
 
O

onyliu

Unregistered / Unconfirmed
GUEST, unregistred user!
与FormKeyUp联合呢加个FLAG FormKeyUp置为true down的时候置为false 为true 的时候再触发事件
 
F

fengxiaoxiao

Unregistered / Unconfirmed
GUEST, unregistred user!
不能用FormKeyUP事件替代吗?
 
W

wql

Unregistered / Unconfirmed
GUEST, unregistred user!
加一个忙标志即可!
 
Z

zyong.home

Unregistered / Unconfirmed
GUEST, unregistred user!
唉,我的分呀
 
S

sexhotel11

Unregistered / Unconfirmed
GUEST, unregistred user!
定义个全局变量procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin inc(count); if count=1 then begin showmessage('fsdfds'); end;end;procedure TForm1.FormCreate(Sender: TObject);begin count:=0;end;
 
Y

yong2000

Unregistered / Unconfirmed
GUEST, unregistred user!
To sexhotel11:1.你的例子按键只能执行一次,第二次按键下就不起作用了。2.一定要按某个键,如回车键,其他键不能有作用。
 
3

3868474

Unregistered / Unconfirmed
GUEST, unregistred user!
检测两次按键的时间间隔就好。
 
P

pyzhx801225

Unregistered / Unconfirmed
GUEST, unregistred user!
设个变量,在KEYUP中改变变量的值为TRUE。KEYDOWN中变量为TRUE时执行,并把变量设为FALSE。
 
B

bettle_c

Unregistered / Unconfirmed
GUEST, unregistred user!
用事件替换,在FormKeyDown事件触发后,把该事件给替换了,在formClose或者其他你自己设的事件里把FormKeyDown事件换回来,这样,不管按几次都只会执行一次
 
F

flyerer1

Unregistered / Unconfirmed
GUEST, unregistred user!
onyliu贞节
 
H

hctdnjy

Unregistered / Unconfirmed
GUEST, unregistred user!
设一个全局变量初始值为FALSE,KEYDOWN时如果KEY等于设定的键值并且变量值为FALSE时则置变量值为TRUE,开始执行程序,如果变量为TRUE时,跳过执行,KEYDOWN时如果KEY等于设定的键值则置变量为FALSE.
 
S

sexhotel11

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FormCreate(Sender: TObject);begin count:=0 ;end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin inc(count); if count=1 then begin showmessage('dsadsa'); end;end;procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);begin count:=0;end;
 
Y

yong2000

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部 底部