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