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

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

yong2000

Unregistered / Unconfirmed
GUEST, unregistred user!
在FormKeyDown事件中怎样做到一直按着某一键(如回车键),过几秒放开,而FormKeyDown中的程序只执行一次,以后几次按下几秒还是执行一次。能否提供演示代码?
 
FormKeyPress ??
 
To onyliu:FormKeyPress也一样,一直按着时,会反复执行FormKeyPress中写的程序。
 
与FormKeyUp联合呢加个FLAG FormKeyUp置为true down的时候置为false 为true 的时候再触发事件
 
不能用FormKeyUP事件替代吗?
 
加一个忙标志即可!
 
唉,我的分呀
 
定义个全局变量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;
 
To sexhotel11:1.你的例子按键只能执行一次,第二次按键下就不起作用了。2.一定要按某个键,如回车键,其他键不能有作用。
 
检测两次按键的时间间隔就好。
 
设个变量,在KEYUP中改变变量的值为TRUE。KEYDOWN中变量为TRUE时执行,并把变量设为FALSE。
 
用事件替换,在FormKeyDown事件触发后,把该事件给替换了,在formClose或者其他你自己设的事件里把FormKeyDown事件换回来,这样,不管按几次都只会执行一次
 
onyliu贞节
 
设一个全局变量初始值为FALSE,KEYDOWN时如果KEY等于设定的键值并且变量值为FALSE时则置变量值为TRUE,开始执行程序,如果变量为TRUE时,跳过执行,KEYDOWN时如果KEY等于设定的键值则置变量为FALSE.
 
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;
 
多人接受答案了。
 

Similar threads

后退
顶部