怎样让自己的控件响应键盘事件?

数字蛋糕 2001-04-02 02:58:00
我从TCustomControl继承了一个控件,但是接收不到键盘消息(尽管我已经写了WM_KEYDOWN或者WM_CHAR的事件处理过程)。
是不是要事先在控件的一些什么属性中作设置?
...全文
78 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
数字蛋糕 2001-06-08
谢谢
  • 打赏
  • 举报
回复
coldljy 2001-04-05
方向键与其它的键有区别!Delphi中使用这几个键来在多个控件中移动焦点,而不是触发一个WM_KEYDOWM事件。类似的还有VK_RETURN、VK_TAB...
你需要处理WM_GETDLGCODE或CM_WANTSPECIALKEY :
e.g.

type
TMyControl = class(TWinControl)
private
//..
procedure WMGetDlgCode(var message: TMessage);
message WM_GETDLGCODE;
//..
end;

// request the arrow keys + characters
procedure TMyControl.WMGetDlgCode(var message: TMessage);
begin
message.Result := DLGC_WANTARROWS or DLGC_WANTCHARS;
end;
  • 打赏
  • 举报
回复
数字蛋糕 2001-04-05
我没说清楚。后来我又试了一下,其实可以响应一部分的键的。除了四个方向键和左边的Alt以外都可以响应。注:我用的是德语键盘。但是对于WM_KEYDOWN好像不会有这样的区别啊。
  • 打赏
  • 举报
回复
BS 2001-04-02
奇怪
  • 打赏
  • 举报
回复
发帖
Delphi

5122

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2001-04-02 02:58
社区公告
暂无公告