首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

这代码为啥不能捕捉Shift+数字小键盘的事件

2012-12-31 
这代码为什么不能捕捉Shift+数字小键盘的事件?一个窗体,上面就一个TEdit组件(名为edt1)在OnKeyUp事件中:vo

这代码为什么不能捕捉Shift+数字小键盘的事件?
一个窗体,上面就一个TEdit组件(名为edt1)
在OnKeyUp事件中:


void __fastcall TForm1::edt1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
    if(Shift.Contains(ssShift))
{
if(Key=='1'||Key==97)
{
if(Key==97)
Key='1';
if(StrToInt(edt1->Text)>0)
edt1->Text=StrToInt(edt1->Text)-1;
}
        else
            Key=0;
    }
    else
    {
        if(Key=='1'||Key==97)
{
if(Key==97)
Key='1';
            edt1->Text=StrToInt(edt1->Text)+1;
}
        else
            Key=0;
    }
}


功能是:
1)按字母上方的数字键‘1’,输入框里的数字加1;
2)shift+字母上方的数字键‘1’,输入框里的数字减1;
3)按数字小键盘的数字键‘1’,输入框里的数字加1;
4)shift+数字小键盘的数字键‘1’,输入框里的数字减1。

功能123都实现了,可是4实现不了,捕捉不到事件是为什么?
[解决办法]
数字小键盘的1键,键码是VK_NUMPAD1
[解决办法]
你的代码有很多问题,其中最明显的是你按shift+数字输入的应该是数字键上的字符.而且你每次输入数字,虽说文本框里原来的值加减了,但是输入的数字还是存在的文本框的最前面.你应该理解你的需求,你这么做是不明智的.

热点排行