在delphi中如何设置热键来转移焦点,如点击按键A就把焦点移到了edit1编辑框里 5

 我来答
windblast
2012-10-21 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13621
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
以下是我的示例代码:

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。
last_wolf1860
2012-10-21 · TA获得超过640个赞
知道小有建树答主
回答量:482
采纳率:100%
帮助的人:352万
展开全部
设置热键分两种:程序内部快捷键、全局快捷键
内部快捷键比较简单,最常用的一种方式是使用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里设计,就是熟悉控件的使用
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百年情殇
2012-10-24 · TA获得超过157个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:152万
展开全部
支持 windblast的方案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式