请教几个键盘响应的问题

sp5guy 2003-04-08 04:36:22
请问:
1。当用户在键盘上输入F1,F2,.....F12时,执行对应程序。这样的代码如何写?例如在
procedure form1.onshow();
begin
if 按下F1 then
do...........
end;

2。为何在
procedure form1.button1onpresskey(sender:Tobject,var key);
begin
if ord(key)=13 then //按下回车键
........
程序没反应?而在edit的onpresskey事件中写如上代码是有用的?


3.当回车按下时edit1执行相应的程序,要实现这样的功能有几种方法?
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
NightCloud 2003-04-10
  • 打赏
  • 举报
回复
是在onkeydown时间里写,不是在onkeypress时间里写!
OnKeyDown的定义
TWinControl.OnKeyDown
Occurs when a user presses any key while the control has focus.
type
TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;
property OnKeyDown: TKeyEvent;

OnKeyPress的定义
TWinControl.OnKeyPress
Occurs when key pressed.
type TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object;
property OnKeyPress: TKeyPressEvent;

另:有onpresskeydown(sender:Tobject;var key:char);这样的定义吗
sp5guy 2003-04-10
  • 打赏
  • 举报
回复
我试过楼上的代码了,出现问题如下:
form1.onpresskeydown(sender:Tobject;var key:char);
这里的key默认是字符型的,而vf_f1,vf_f2.......都是整型的,编译运行实提示类型不匹配,如何是好?
dawnming 2003-04-09
  • 打赏
  • 举报
回复
1.d6上,设置form得keypreview属性为true,然后在form的keydown事件里判断用户按下那个键即可
case key of
VK_F1: ...;
VK_F2: ...;
...
END;

2.在keydown事件里头写试试看
if key=vk_return then
....

同意
数字蛋糕 2003-04-09
  • 打赏
  • 举报
回复
使用ActionList,把每个Action的热键设为你要的就行了。
NightCloud 2003-04-08
  • 打赏
  • 举报
回复
1.d6上,设置form得keypreview属性为true,然后在form的keydown事件里判断用户按下那个键即可
case key of
VK_F1: ...;
VK_F2: ...;
...
END;

2.在keydown事件里头写试试看
if key=vk_return then
....

5,391

社区成员

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

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