请问如何捕获按键事件?

Alvin_huai 2003-09-25 07:43:40
我的EDIT是动态生成的个数不定,而且很多,但我想在每一个EDIT上都产生一个事件并执行相应的函数,如判断在上面按下一个字符键就后,就调用相应的函数产生不同的输出!
请问如何实现啊!谢谢
...全文
42 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dickeybird888 2003-09-26
  • 打赏
  • 举报
回复
哈哈楼上说的对!
FrameSniper 2003-09-26
  • 打赏
  • 举报
回复
var
EdtArray : Array of TEdit;

procedure MyEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage('当前操作的Edit是:'+(Sender as TEdit).Name);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
vEdit:TEdit;
begin
SetLength(EdtArray,N); //N为长度
for I:=0 to N-1 do
begin
vEdit:=Tedit.Create(Self);
with vEdit do
begin
Tag:=I; //通过Tag属性判断当前操作的是哪个Edit
Name:='Edit'+IntToStr(I)
Parent := Self;
OnKeyDown:=MyEditKeyDown;
end;
EdtArray[I]:=vEdit;
end;
end;


Alvin_huai 2003-09-26
  • 打赏
  • 举报
回复
请问能说的详细一些点不???急啊
delphiseabird 2003-09-26
  • 打赏
  • 举报
回复
利用Sender
Alvin_huai 2003-09-26
  • 打赏
  • 举报
回复
非常感谢大家!
Alvin_huai 2003-09-25
  • 打赏
  • 举报
回复
非常感谢dickeybird888(于伟刚)个其他朋友,但我还有个问题,因为我是把动态EDIT存入了数组中的,但是我还想在按下按键是,能确认是哪个按键,即能把EditArray[i]的i能传下去,请问该怎么办呢?谢谢
wdsimon 2003-09-25
  • 打赏
  • 举报
回复
都说了
kuki84 2003-09-25
  • 打赏
  • 举报
回复
onkeypress
dickeybird888 2003-09-25
  • 打赏
  • 举报
回复
你是不是指如何为动态生成的控件加入事件,我写了个例子,如下:
procedure TForm1.Button1Click(Sender: TObject);
var
ss:Tedit;
begin
ss:=Tedit.Create(self);
ss.parent := form1;
ss.OnKeyDown:=ssKeyDown;
ss.Show;
end;

procedure TForm1.ssKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
shomwssage(inttostr(key));
end;

FrameSniper 2003-09-25
  • 打赏
  • 举报
回复
是啊,那么多事件为什么不使用呢?
limd 2003-09-25
  • 打赏
  • 举报
回复
keypress吧
upingking 2003-09-25
  • 打赏
  • 举报
回复
你是怎么动态创建的,如果用数组,应该可以得到数组每一个元素的keypress、keydown事件的
Shiyl 2003-09-25
  • 打赏
  • 举报
回复
keypress

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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