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

数字蛋糕 2001-04-02 02:58:00
我从TCustomControl继承了一个控件,但是接收不到键盘消息(尽管我已经写了WM_KEYDOWN或者WM_CHAR的事件处理过程)。
是不是要事先在控件的一些什么属性中作设置?
...全文
110 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
数字蛋糕 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
  • 打赏
  • 举报
回复
奇怪

5,927

社区成员

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

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