在delphi中如何设置热键来转移焦点,如点击按键A就把焦点移到了edit1编辑框里
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在delphi中如何设置热键来转移焦点,如点击按键A就把焦点移到了edit1编辑框里相关的知识,希望对你有一定的参考价值。
以下是我的示例代码:1. 设置Form的keypreview设置为true.
2. 响应KeyPress事件
procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key in [\'a\',\'A\'] then
begin
Edit1.SetFocus;//如果按a或A就将窗口焦点移动到Edit1控件。
end;
end;
提示: 以上代码是比较容易、简单的处理,但也有一些需要注意的地方:
1. 焦点的转移只有在当前的父窗口获取焦点的时候,才会执行成功。
2. 需要注意FormKeyPress会一直响应按键A,所以,假设你正在编辑框中按下字母A,焦点也会转移。由于不知道你具体的意图,所以上面的代码就是按你的要求写的。如果感觉有点不好,则可以进一步修改代码,比如:过滤一下,只响应你需要的,或者将 A 换成其他容易区别开的。
FormKeyPress 通常只响应字符,如果是有特殊键,比如ctrl键,那就换成响应 FormKeyDown、up。 参考技术A 设置热键分两种:程序内部快捷键、全局快捷键
内部快捷键比较简单,最常用的一种方式是使用action,设置其ShortCut属性
全局快捷键相对复杂,需要注册热键,尔后处理Windows消息:
如设置全局F2快捷键
var C_MyKey_ID:Word;
C_MyKey_ID:= GlobalAddAtom('MyHotHotKey');
RegisterHotKey(Handle, C_MyKey_ID, 0, VK_F2);
然后处理Windows消息:
procedure MyHotKey(var msg: TWMHotKey); message WM_HOTKEY;
begin
if msg.HotKey = C_MyKey_ID then
begin
ShowMessage('热键启动');
end;
end;追问
就是最简单的在delphi里设计,就是熟悉控件的使用
参考技术B 支持 windblast的方案。以上是关于在delphi中如何设置热键来转移焦点,如点击按键A就把焦点移到了edit1编辑框里的主要内容,如果未能解决你的问题,请参考以下文章