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

这代码为什么不能捕捉Shift+数字小键盘的事件?解决方法

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

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

C/C++ code
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+数字输入的应该是数字键上的字符.而且你每次输入数字,虽说文本框里原来的值加减了,但是输入的数字还是存在的文本框的最前面.你应该理解你的需求,你这么做是不明智的.

热点排行