连续按键事件的烦恼!!!

xiajinanhello 2003-08-20 12:55:26
我有一按键事件
当我按着此键一段时间后松开,只见我的那事件还在不停的执行,过一会才会
停下来
这一现象应如何解决它,主要怎么引起的?
谢谢各位!
...全文
15 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiajinanhello 2003-08-20
  • 打赏
  • 举报
回复
不要意思,错了。应该是
当我按键不松开时,消息队列中不是有很多过KeyDown消息吗?
xiajinanhello 2003-08-20
  • 打赏
  • 举报
回复
不是的
当我按键不松开时,消息队列中不是有很多过Keyup消息吗?
xiajinanhello 2003-08-20
  • 打赏
  • 举报
回复
不是的
当我按键不松开时,消息队列中不是有很多过Keyup事件吗?
madyak 2003-08-20
  • 打赏
  • 举报
回复

如果控制了,只执行一次,哪来的多余KeyDown事件?是不是要把正在执行KeyDown撤销?
xiajinanhello 2003-08-20
  • 打赏
  • 举报
回复
这样不行,看怎样让Keyup事件立即响应
清掉消息队列中多余的KeyDown事件
madyak 2003-08-20
  • 打赏
  • 举报
回复
上面那段能保证你的事件,每次按键只能执行一次,想执行第二次必需松开,再按下才能执行,不知能否达到你的要求!
xiajinanhello 2003-08-20
  • 打赏
  • 举报
回复
不行啊,TForm1.Edit1KeyUp发生在所有TForm1.Edit1KeyDown执行完了
才执行啊
cch78 2003-08-20
  • 打赏
  • 举报
回复
Keyup事件触发停止事件
madyak 2003-08-20
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i: integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
i := 0;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F1 then
begin
Edit1.OnKeyDown := nil;
inc(i);
Label1.Caption := IntToStr(i);
end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F1 then

Edit1.OnKeyDown := Edit1KeyDown;
end;
end.

xiajinanhello 2003-08-20
  • 打赏
  • 举报
回复
keydown
我想让键弹起时立即终止我的事件执行
xuejinlong 2003-08-20
  • 打赏
  • 举报
回复
呵呵,什么按键事件?
可能感兴趣的项目设计:把妹神器—自制的电子萤火虫(https://www.cirmall.com/circuit/1673/detail?3) 前言: 前段时间,看到某论坛网友制作的一款萤火虫,觉得很好。于是自己便开始制作,目前还只是停留在理论阶段,正在画原理图,现在将全彩LED萤火虫的原理图开源出来,同时附上部分所用到的芯片资料。 LED彩灯制作思路: 采用的主控芯片为ATMEGA328P,芯片详情还请各位自行百度吧,这里不多介绍。通过一个按键,进行模式的切换,单个按键怎么切换,当然是判断这个按键长按,短按或者连续按压一次,二次,三次...等等,尽可能的简化电路,为后面的实物缩小体积。 TM1826是一款十二通道LED恒流驱动,单个芯片能驱动四个RGB全彩的LED,我用了四片,虽然说这个芯片可以联级,但我觉得这发送的数据量有点大,因此放弃这个方式。直接MCU的四个I/O口分别控制,其实,这款芯片我还是第一次使用,芯片已经到货,正准备板子出来了,做几个实验,熟悉下这款芯片怎么操作。 我还加入了SD卡,生日嘛!肯定要有生日快乐歌,将某某的原音存入SD卡中,到时候直接调取就可以了,为什么我不用音乐模块呢?因为很简单,那个声音太呆板了。SD卡中再存几首她喜欢的音乐,哎呀,说着说着有点像MP3了。还加入了MD8002A 集成功放,驱动一个小小的扬声器,没得问题。电源部分,加入太阳能,告别USB充电的烦恼!太阳能板采用100mm直径的,5V 150mA,应该够了。 系统设计框图: 大致的3D效果图,也分享出来给大家看看效果,PCB直径是100mm的,这个直径的根据选的玻璃瓶而定,暂时是定这么大,后期等瓶子到货了,再进行缩小处理。还有,LED采用【共阳 高亮全彩LED 5MM 四脚红绿蓝三色 】,图中LED的封装还未更改,还在考虑要不要加限流电阻,这个只有等货到,再确定了。电源部分,3.3V使用的是AMS1117-3V3的模块,有点小奢侈,这个是给SD卡供电的,因为单片机是5V的,中间有个电平转换问题.
纵横笔手写板 型号:HS-01A 方便实用的手写文字输入系统 一、硬件参数: 1. 采用最新技术:无线有源电磁笔技术,可实现鼠标、手写笔双重功能; 2. 1024级压感技术 3. 识别区域:161×102mm 4. 外形尺寸:210×185mm 二、产品特点: 1. 感应精度高,使用寿命长; 2. 无线笔可随时插入笔槽充电,每次充电5秒钟,可连续使用10小时,免除更换电池的烦恼; 3. 超大感应区,使用更方便; 4. 感应面板超薄设计,完美体现人体工学理念,充分缓解长时间使用造成的手腕疲劳感; 5. 手写笔、鼠标功能自动切换; 6. 绘写通功能,可以写字、绘画; 7. 软件界面、功能简洁明了,易学易用,极易上手,尤其适合不熟悉电脑的用户。 8. 识别:①中文简体②中文繁体③日文④韩文⑤英文⑥数字; 9. 支持连续书写。 三、应用环境: 1. Pentium以上电脑 2. 64M以上内存 3. 200M以上硬盘 4. USB接口 5. Windows2000/XP/Vista操作系统 6. 杀毒软件建议使用国内、国际知名品牌,且口碑良好的,如:瑞星、金山毒霸、诺顿、卡巴斯基等。推荐使用以下杀毒软件: 永久免费:瑞星、金山毒霸、可牛、安天防线、AVG杀毒 收费软件:诺顿、卡巴斯基、趋势 本公司软件在以上的杀毒软件中均做过测试,可放心使用。 特别说明:360杀毒、360安全卫士会影响本公司手写识别软件的正常运行。不能使用。 四、硬件说明: 1. 手写板中间位置161×102mm区域为有效识别区; 2. 手写笔内置可充电电源系统,无需更换电池,终生免维护。不用时,可插入充电座上。充电约5秒钟,笔可连续使用10小时(首次使用需充电约1分钟); 3. 在使用时,压下笔尖,接触板面,手写笔是书写功能。轻轻放在板面上或稍离开板面1-3毫米为鼠标功能; 4. 当笔内电源电压较低时,显示屏上的笔尖或光标会抖动,这时,要将笔插入笔槽充电; 5. 手写笔相当于一个全功能鼠标:笔尖相当于鼠标左键,靠近笔尖的按键(下键)相当于鼠标中间键(滚轮),靠近上端的按键(上键)相当于鼠标右键; 6. 笔尖双击时(相当于鼠标左键双击),前后两次点击的位置要相同,否则不能起到双击的功能;也可先按上键,再用笔尖点击,这样也可以实现双击的功能; 7. 使用中,如出现连笔现象,请将笔移出感应区,然后再回到感应区,即可解除连笔; 8. 左撇子用户请先将电脑系统里的“鼠标”设置为“右键有效”(在“控制面板”里打开“鼠标”,钩选“鼠标键配置”)

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧