Delphi中按钮为什么无法响应VK_Left,VK_UP等4个方向键,Form的KeyPreview已经设置为True。

如题所述

第1个回答  2013-09-10
代码如下:

...
if((GetKeyState(VK_LSHIFT) & 0x8000) == 32768)
bShiftKeyPressed = TRUE;

if(bShiftKeyPressed)
{
switch(pMsg->wParam)
{
case VK_LEFT: // LEFT
AfxMessageBox("1");
m_p->shiftKeyPress(1);
break;
case VK_RIGHT:// RIGHT
AfxMessageBox("2");
m_p->shiftKeyPress(2);
break;
case VK_HOME: // HOME
AfxMessageBox("3");
m_p->shiftKeyPress(3);
break;
...
}
...
}
...

bShiftKeyPressed == TRUE是没有问题的

在IE中shift + HOME以及后面的组合键都可以完成选择,
第2个回答  2013-09-09
你得先搞清楚
Form的KeyPreview已经设置为True
其作用是让Form先于其子控件接收KeyPress消息。本回答被网友采纳
第3个回答  2013-09-09
要在keydown事件中写追问

我已经找到原因了,其实是TabStop的问题,使用VK_UP等方向控制键时需要将Button的TabStop属性设置为false才可以,否则即使在Keydown里面写上代码也无法实现。

本回答被提问者采纳

Delphi中按钮为什么无法响应VK_Left,VK_UP等4个方向键,Form的KeyPreview...
bShiftKeyPressed == TRUE是没有问题的 在IE中shift + HOME以及后面的组合键都可以完成选择,

相似回答