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

xiajinanhello 2003-08-20 12:55:26
我有一按键事件
当我按着此键一段时间后松开,只见我的那事件还在不停的执行,过一会才会
停下来
这一现象应如何解决它,主要怎么引起的?
谢谢各位!
...全文
17 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
  • 打赏
  • 举报
回复
呵呵,什么按键事件?

5,386

社区成员

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

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