2个回答
展开全部
Ctrl 一般要单独来判断,没有虾米组合代码...
例如要TForm来判断Ctrl+Tab,需要响应OnKeyDown事件:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key = VK_TAB) then
ShowMessage('OK');
end;
如果焦点不在Form上,那上面的代码就不好使了。
如果想截获所有键盘信息,得用Delphi蛋疼的ApplicationEvents,因为Delphi把重要的消息循环给藏起来了...
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_KEYDOWN) and (Msg.wParam = VK_TAB) and (GetKeyState(VK_CONTROL) < 0) then
ShowMessage('OK');
end;
例如要TForm来判断Ctrl+Tab,需要响应OnKeyDown事件:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key = VK_TAB) then
ShowMessage('OK');
end;
如果焦点不在Form上,那上面的代码就不好使了。
如果想截获所有键盘信息,得用Delphi蛋疼的ApplicationEvents,因为Delphi把重要的消息循环给藏起来了...
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_KEYDOWN) and (Msg.wParam = VK_TAB) and (GetKeyState(VK_CONTROL) < 0) then
ShowMessage('OK');
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询