热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Delphi:keydown与keypress的区别,组合键

一、结果 keydown:用户在键盘上按下某按键时发生。一直按着某按键则会不断触发。 keypress:用户按下一个ASCII字符按键,产生一个字符时发生(不含shift、alt、

一、结果 
  keydown:用户在键盘上按下某按键时发生。一直按着某按键则会不断触发。 
  keypress:用户按下一个ASCII字符按键,产生一个字符时发生(不含shift、alt、ctrl)。一直按着某按键则会不断触发。 
  keyup:用户释放某一个按键是触发。 
  二、事件触发顺序 

  keydown、keypress、keyup

 

 

Shift 是一个集合变量。
type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
也就是说TShiftstate类型有ssShift, ssAlt, ssCtrl, ssLeft(鼠标左键), ssRight(鼠标右键), ssMiddle(鼠标中键), ssDouble (鼠标双击)
Value Meaning
ssShift               The Shift key is held down.
ssAlt                  The Alt key is held down.
ssCtrl                The Ctrl key is held down.
ssLeft                The left mouse button is held down.
ssRight             The right mouse button is held down.
ssMiddle            The middle mouse button is held down.
ssDouble          The mouse was double-clicked.
用来判断组合键中是否用shift、Ctrl、鼠标左键、右键、中键、双击事件。
 
Delphi中一些常用的组合键值
CTRL+A:#1 CTRL+B:#2 CTRL+C:#3 CTRL+D:#4 CTRL+E:#5 CTRL+F:#6 CTRL+G:#7
CTRL+H:#8 CTRL+I:#9 CTRL+J:#10 CTRL+K:#11 CTRL+L:#12 CR:#13 CTRL+N:#14
CTRL+O:#15 CTRL+P:#16 CTRL+Q:#17 CTRL+R:#18 CTRL+S:#19 CTRL+T:#20
CTRL+U:#21 CTRL+V:#22 CTRL+W:#23 CTRL+X:#24 CTRL+Y:#25 CTRL+Z:#26 ESC:#27
CTRL+:#28 CTRL+]:#29 SHIFT+CTRL+-:#30 DEL:#127
 
一般用在keydown、keyup、keypress事件中。
OnKeyDown和OnKeyUp事件中的Key是Word型的,表示用户按的是键盘上的哪个键,OnKeyPress中的Key是Char型,表示用户输入什么字符。一个产生8位(char)常规健值,一个产生16位(word)功能健健值。


1.KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符,KeyDown和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)
2.KeyPress 只能捕获单个字符
KeyDown 和KeyUp 可以捕获组合键。
3.KeyPress 可以捕获单个字符的大小写
4.KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。
5.KeyPress 不区分小键盘和主键盘的数字字符。
KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。
6.其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。


keydown是键盘按下任何键
keypress是键盘按下任何数字键和任何字母键
 
keydown 与keypress的声明格式差别很大
1 onkeydown事件
type TKeyEvent   =   procedure   (Sender:   TObject;   var   Key:   Word;   Shift:   TShiftState)   of   object;
property   OnKeyDown:   TKeyEvent;
该事件在有任何键按下的时候,就发生。看!它响应的是Word类型,还能识别Shift键状态
2 onkeypress事件
type   TKeyPressEvent   =   procedure   (Sender:   TObject;   var   Key:   Char)   of   object;
property   OnKeyPress:   TKeyPressEvent;
该事件响应的是字符类型Char,只能识别ASCII码,不能识别组合键和控制键和功能键。按下功能键、控制键不产生该事件,但产生OnkeyDown事件。
 
TWinControl与键盘相关的3个事件如下:
OnKeyDown:键按下
OnKeyPress:有Ascii字符产生
OnKeyUp:键放开
其中OnKeyDown、OnKeyUp对任何按键都有响应,传入参数为
var   Key:   Word 键的扫描值
    Shift:   TShiftState 表示控制键状态,包括键盘上的Ctrl、Shift、Alt和鼠标的左、中、右键及双击。
 
OnKeyPress事件只对Ascii有响应,传入参数为
var   Key:   Char Ascii字符
//例如F1-F10只有onKeydown有反应
另外TWincontrol.   KeyPreview:Boolean属性确定控件是否在子控件之前处理按键。
 
比如说enter键,
onkeypress事件
if  key=#13   then    //当你按下enter键时触发该事件
do  something
 
onkeydown事件
if  key=13  then     //当你按下enter键时触发该事件
do  something
 
 
其中所有的KeyDown事件里面应该用如下判断:
if Key = VK_RETURN then
...
所有的KeyPress事件里面应该用如下判断:
if Key = #13 then
...


postmessage(self.handle,wm_keydown,vk_tab,0);
keybd_event(VK_TAB,2,0,0);
perform(WM_NEXTDLGCTL,0,0);
SelectNext(ActiveControl, True, True);
...


但是显然用回车代码TAB显然不适合于BUTTON,你在它上面按回车的时候它会执行OnClick,所以不会TAB,你可以用别的键代替回车。
 
》》》》》》》》》》
 
键值
 
在keydown事件里面
showmessage(inttostr(key));
在keypress事件里面
showmessage(key);
就知道了。


Form1.KeyPreview := True;


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Showmessage(IntToStr(Key));
end;


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Showmessage(IntToStr(Ord(Key)));
end;




{ Virtual Keys, Standard Set }
{$EXTERNALSYM VK_LBUTTON}
VK_LBUTTON = 1;
{$EXTERNALSYM VK_RBUTTON}
VK_RBUTTON = 2;
{$EXTERNALSYM VK_CANCEL}
VK_CANCEL = 3;
{$EXTERNALSYM VK_MBUTTON}
VK_MBUTTON = 4; { NOT contiguous with L & RBUTTON }
{$EXTERNALSYM VK_BACK}
VK_BACK = 8;
{$EXTERNALSYM VK_TAB}
VK_TAB = 9;
{$EXTERNALSYM VK_CLEAR}
VK_CLEAR = 12;
{$EXTERNALSYM VK_RETURN}
VK_RETURN = 13;
{$EXTERNALSYM VK_SHIFT}
VK_SHIFT = $10;
{$EXTERNALSYM VK_CONTROL}
VK_COnTROL= 17;
{$EXTERNALSYM VK_MENU}
VK_MENU = 18;
{$EXTERNALSYM VK_PAUSE}
VK_PAUSE = 19;
{$EXTERNALSYM VK_CAPITAL}
VK_CAPITAL = 20;
{$EXTERNALSYM VK_KANA }
VK_KANA = 21;
{$EXTERNALSYM VK_HANGUL }
VK_HANGUL = 21;
{$EXTERNALSYM VK_JUNJA }
VK_JUNJA = 23;
{$EXTERNALSYM VK_FINAL }
VK_FINAL = 24;
{$EXTERNALSYM VK_HANJA }
VK_HANJA = 25;
{$EXTERNALSYM VK_KANJI }
VK_KANJI = 25;
{$EXTERNALSYM VK_CONVERT }
VK_COnVERT= 28;
{$EXTERNALSYM VK_NONCONVERT }
VK_NOnCONVERT= 29;
{$EXTERNALSYM VK_ACCEPT }
VK_ACCEPT = 30;
{$EXTERNALSYM VK_MODECHANGE }
VK_MODECHANGE = 31;
{$EXTERNALSYM VK_ESCAPE}
VK_ESCAPE = 27;
{$EXTERNALSYM VK_SPACE}
VK_SPACE = $20;
{$EXTERNALSYM VK_PRIOR}
VK_PRIOR = 33;
{$EXTERNALSYM VK_NEXT}
VK_NEXT = 34;
{$EXTERNALSYM VK_END}
VK_END = 35;
{$EXTERNALSYM VK_HOME}
VK_HOME = 36;
{$EXTERNALSYM VK_LEFT}
VK_LEFT = 37;
{$EXTERNALSYM VK_UP}
VK_UP = 38;
{$EXTERNALSYM VK_RIGHT}
VK_RIGHT = 39;
{$EXTERNALSYM VK_DOWN}
VK_DOWN = 40;
{$EXTERNALSYM VK_SELECT}
VK_SELECT = 41;
{$EXTERNALSYM VK_PRINT}
VK_PRINT = 42;
{$EXTERNALSYM VK_EXECUTE}
VK_EXECUTE = 43;
{$EXTERNALSYM VK_SNAPSHOT}
VK_SNAPSHOT = 44;
{$EXTERNALSYM VK_INSERT}
VK_INSERT = 45;
{$EXTERNALSYM VK_DELETE}
VK_DELETE = 46;
{$EXTERNALSYM VK_HELP}
VK_HELP = 47;
{ VK_0 thru VK_9 are the same as ASCII ’0’ thru ’9’ ($30 - $39) }
{ VK_A thru VK_Z are the same as ASCII ’A’ thru ’Z’ ($41 - $5A) }
{$EXTERNALSYM VK_LWIN}
VK_LWIN = 91;
{$EXTERNALSYM VK_RWIN}
VK_RWIN = 92;
{$EXTERNALSYM VK_APPS}
VK_APPS = 93;
{$EXTERNALSYM VK_NUMPAD0}
VK_NUMPAD0 = 96;
{$EXTERNALSYM VK_NUMPAD1}
VK_NUMPAD1 = 97;
{$EXTERNALSYM VK_NUMPAD2}
VK_NUMPAD2 = 98;
{$EXTERNALSYM VK_NUMPAD3}
VK_NUMPAD3 = 99;
{$EXTERNALSYM VK_NUMPAD4}
VK_NUMPAD4 = 100;
{$EXTERNALSYM VK_NUMPAD5}
VK_NUMPAD5 = 101;
{$EXTERNALSYM VK_NUMPAD6}
VK_NUMPAD6 = 102;
{$EXTERNALSYM VK_NUMPAD7}
VK_NUMPAD7 = 103;
{$EXTERNALSYM VK_NUMPAD8}
VK_NUMPAD8 = 104;
{$EXTERNALSYM VK_NUMPAD9}
VK_NUMPAD9 = 105;
{$EXTERNALSYM VK_MULTIPLY}
VK_MULTIPLY = 106;
{$EXTERNALSYM VK_ADD}
VK_ADD = 107;
{$EXTERNALSYM VK_SEPARATOR}
VK_SEPARATOR = 108;
{$EXTERNALSYM VK_SUBTRACT}
VK_SUBTRACT = 109;
{$EXTERNALSYM VK_DECIMAL}
VK_DECIMAL = 110;
{$EXTERNALSYM VK_DIVIDE}
VK_DIVIDE = 111;
{$EXTERNALSYM VK_F1}
VK_F1 = 112;
{$EXTERNALSYM VK_F2}
VK_F2 = 113;
{$EXTERNALSYM VK_F3}
VK_F3 = 114;
{$EXTERNALSYM VK_F4}
VK_F4 = 115;
{$EXTERNALSYM VK_F5}
VK_F5 = 116;
{$EXTERNALSYM VK_F6}
VK_F6 = 117;
{$EXTERNALSYM VK_F7}
VK_F7 = 118;
{$EXTERNALSYM VK_F8}
VK_F8 = 119;
{$EXTERNALSYM VK_F9}
VK_F9 = 120;
{$EXTERNALSYM VK_F10}
VK_F10 = 121;
{$EXTERNALSYM VK_F11}
VK_F11 = 122;
{$EXTERNALSYM VK_F12}
VK_F12 = 123;
{$EXTERNALSYM VK_F13}
VK_F13 = 124;
{$EXTERNALSYM VK_F14}
VK_F14 = 125;
{$EXTERNALSYM VK_F15}
VK_F15 = 126;
{$EXTERNALSYM VK_F16}
VK_F16 = 127;
{$EXTERNALSYM VK_F17}
VK_F17 = 128;
{$EXTERNALSYM VK_F18}
VK_F18 = 129;
{$EXTERNALSYM VK_F19}
VK_F19 = 130;
{$EXTERNALSYM VK_F20}
VK_F20 = 131;
{$EXTERNALSYM VK_F21}
VK_F21 = 132;
{$EXTERNALSYM VK_F22}
VK_F22 = 133;
{$EXTERNALSYM VK_F23}
VK_F23 = 134;
{$EXTERNALSYM VK_F24}
VK_F24 = 135;
{$EXTERNALSYM VK_NUMLOCK}
VK_NUMLOCK = 144;
{$EXTERNALSYM VK_SCROLL}
VK_SCROLL = 145;
{ VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys.
Used only as parameters to GetAsyncKeyState() and GetKeyState().
No other API or message will distinguish left and right keys in this way. }
{$EXTERNALSYM VK_LSHIFT}
VK_LSHIFT = 160;
{$EXTERNALSYM VK_RSHIFT}
VK_RSHIFT = 161;
{$EXTERNALSYM VK_LCONTROL}
VK_LCOnTROL= 162;
{$EXTERNALSYM VK_RCONTROL}
VK_RCOnTROL= 163;
{$EXTERNALSYM VK_LMENU}
VK_LMENU = 164;
{$EXTERNALSYM VK_RMENU}
VK_RMENU = 165;
{$EXTERNALSYM VK_PROCESSKEY}
VK_PROCESSKEY = 229;
{$EXTERNALSYM VK_ATTN}
VK_ATTN = 246;
{$EXTERNALSYM VK_CRSEL}
VK_CRSEL = 247;
{$EXTERNALSYM VK_EXSEL}
VK_EXSEL = 248;
{$EXTERNALSYM VK_EREOF}
VK_EREOF = 249;
{$EXTERNALSYM VK_PLAY}
VK_PLAY = 250;
{$EXTERNALSYM VK_ZOOM}
VK_ZOOM = 251;
{$EXTERNALSYM VK_NONAME}
VK_NOnAME= 252;
{$EXTERNALSYM VK_PA1}
VK_PA1 = 253;
{$EXTERNALSYM VK_OEM_CLEAR}
VK_OEM_CLEAR = 254;


:),其实不用记,你不是用delphi吗,在ide里面输入vk_f1总会吧,然后按住ctrl键
单击刚才你输入的vk_f1,就会出来啦!
至于key:char的值,就是key:word的ascII码,你可以看chr(vk_f1),chr(vk_enter),都可以哈!
 
》》》》》》》》》》》》》》》》》》
 
delphi帮助里的虚拟键值表:
vk_right right arrow key
vk_down down arrow key
vk_select select key
vk_print print key (keyboard-specific)
vk_execute execute key
vk_snapshot print screen key
vk_insert insert key
vk_delete delete key
vk_help help key
vk_lwin left windows key (microsoft keyboard)
vk_rwin right windows key (microsoft keyboard)
vk_apps applications key (microsoft keyboard)
vk_numpad0 0 key (numeric keypad)
vk_numpad1 1 key (numeric keypad)
vk_numpad2 2 key (numeric keypad)
vk_numpad3 3 key (numeric keypad)
vk_numpad4 4 key (numeric keypad)
vk_numpad5 5 key (numeric keypad)
vk_numpad6 6 key (numeric keypad)
vk_numpad7 7 key (numeric keypad)
vk_numpad8 8 key (numeric keypad)
vk_numpad9 9 key (numeric keypad)
vk_multiply multiply key (numeric keypad)
vk_add add key (numeric keypad)
vk_separator separator key (numeric keypad)
vk_subtract subtract key (numeric keypad)
vk_decimal decimal key (numeric keypad)
vk_divide divide key (numeric keypad)
vk_f1 f1 key
vk_f2 f2 key
vk_f3 f3 key
vk_f4 f4 key
vk_f5 f5 key
vk_f6 f6 key
vk_f7 f7 key
vk_f8 f8 key
vk_f9 f9 key
vk_f10 f10 key
vk_f11 f11 key
vk_f12 f12 key
vk_f13 f13 key
vk_f14 f14 key
vk_f15 f15 key
vk_f16 f16 key
vk_f17 f17 key
vk_f18 f18 key
vk_f19 f19 key
vk_f20 f20 key
vk_f21 f21 key
vk_f22 f22 key
vk_f23 f23 key
vk_f24 f24 key
vk_numlock num lock key
vk_scroll scroll lock key
vk_lshift left shift key (only used with getasynckeystate and getkeystate)
vk_rshift right shift key (only used with getasynckeystate and getkeystate)
vk_lcontrol left ctrl key (only used with getasynckeystate and getkeystate)
vk_rcontrol right ctrl key (only used with getasynckeystate and getkeystate)
vk_lmenu left alt key (only used with getasynckeystate and getkeystate)
vk_rmenu right alt key (only used with getasynckeystate and getkeystate)
vk_processkey process key
vk_attn attn key
vk_crsel crsel key
vk_exsel exsel key
vk_ereof erase eof key
vk_play play key
vk_zoom zoom key
vk_noname reserved for future use
vk_pa1 pa1 key
vk_oem_clear clear key
 
模拟鼠标
鼠标移动(移动量dx,dy)
mouse_event(MOUSEEVENTF_MOVE,dx,dy,0, 0 );
鼠标在(x,y)处按下或释放
setcursorpos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0 );
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 );
鼠标双击由两次按下与释放来模拟
键盘模拟
一般虚拟键值(VK_)由KeyDown或keyup事件得到
特殊键值
Tab--9
Shift--16
Ctrl--17
Alt--18
CapsLock--20
Esc--27
Win--91,92
NumLock--144
ScrollLock--145
按下键
keybd_event(key, MapVirtualKey(key, 0 ), KEYEVENTF_KEYUP , 0 );
释放键
keybd_event(key, MapVirtualKey(key, 0 ), 0 , 0 );
以上做法对大多数键有效,少数键要用到不同的值
 
》》》》》》》》》》》》》》》》》》》》》》》》》
 
常数名称      十六进制值     十进制值     对应按键
VK_LBUTTON          01          1        鼠标的左键
VK_RBUTTON          02          2        鼠标的右键
VK-CANCEL           03          3        Ctrl+Break(通常不需要处理)
VK_MBUTTON          04          4        鼠标的中键(三按键鼠标)
VK_BACK             08          8        Backspace键
VK_TAB              09          9        Tab键
VK_CLEAR            0C          12       Clear键(Num Lock关闭时的数字键盘5)
VK_RETURN           0D          13       Enter键
VK_SHIFT            10          16       Shift键
VK_CONTROL          11          17       Ctrl键
VK_MENU             12          18       Alt键
VK_PAUSE            13          19       Pause键
VK_CAPITAL          14          20       Caps Lock键
VK_ESCAPE           1B          27      Ese键
VK_SPACE            20          32       Spacebar键
VK_PRIOR            21          33       Page Up键
VK_NEXT             22          34       Page Domw键
VK_END              23          35       End键
VK_HOME             24          36       Home键
VK_LEFT             25          37       LEFT ARROW 键(←)
VK_UP               26          38       UP ARROW键(↑)
VK_RIGHT            27          39       RIGHT ARROW键(→)
VK_DOWN             28          40       DOWN ARROW键(↓)
VK_Select           29          41       Select键
VK_PRINT            2A          42     
VK_EXECUTE          2B          43       EXECUTE键
VK_SNAPSHOT         2C          44       Print Screen键(抓屏)
VK_Insert           2D          45       Ins键(Num Lock关闭时的数字键盘0)
VK_Delete           2E          46       Del键(Num Lock关闭时的数字键盘.)
VK_HELP             2F          47       Help键
VK_0    30          48       0键
VK_1    31          49       1键
VK_2    32          50       2键
VK_3    33          51       3键
VK_4    34          52       4键
VK_5    35          53       5键
VK_6    36          54       6键
VK_7    37          55       7键
VK_8    38          56       8键
VK_9    39          57       9键
VK_A    41          65       A键
VK_B    42          66       B键
VK_C    43          67       C键
VK_D    44          68       D键
VK_E    45          69       E键
VK_F    46          70       F键
VK_G    47          71       G键
VK_H    48          72       H键
VK_I    49          73       I键
VK_J    4A          74       J键
VK_K    4B          75       K键
VK_L    4C          76       L键
VK_M    4D          77       M键
VK_N    4E          78       N键
VK_O    4F          79       O键
VK_P    50          80       P键
VK_Q    51          81       Q键
VK_R    52          82       R键
VK_S    53          83       S键
VK_T    54          84       T键
VK_U    55          85       U键
VK_V    56          86       V键
VK_W    57          87       W键
VK_X    58          88       X键
VK_Y    59          89       Y键
VK_Z    5A          90       Z键
VK_NUMPAD0          60          96       数字键0键
VK_NUMPAD1          61          97       数字键1键
VK_NUMPAD2          62          98       数字键2键
VK_NUMPAD3          62          99       数字键3键
VK_NUMPAD4          64          100      数字键4键
VK_NUMPAD5          65          101      数字键5键
VK_NUMPAD6          66          102      数字键6键
VK_NUMPAD7          67          103      数字键7键
VK_NUMPAD8          68          104      数字键8键
VK_NUMPAD9          69          105      数字键9键
VK_MULTIPLY         6A          106      数字键盘上的*键
VK_ADD              6B          107      数字键盘上的+键
VK_SEPARATOR        6C          108      Separator键
VK_SUBTRACT         6D          109      数字键盘上的-键
VK_DECIMAL          6E          110      数字键盘上的.键
VK_DIVIDE           6F          111      数字键盘上的/键
VK_F1   70          112      F1键
VK_F2   71          113      F2键
VK_F3   72          114      F3键
VK_F4   73          115      F4键
VK_F5   74          116      F5键
VK_F6   75          117      F6键
VK_F7   76          118      F7键
VK_F8   77          119      F8键
VK_F9   78          120      F9键
VK_F10  79          121      F10键
VK_F11  7A          122      F11键
VK_F12  7B          123      F12键
VK_NUMLOCK     90          144      Num Lock 键
VK_SCROLL      91          145      Scroll Lock键
  
上面没有提到的:(都在大键盘)       
VK_LWIN            91       左win键
VK_RWIN            92       右win键
VK_APPS            93       右Ctrl左边键,点击相当于点击鼠标右键,会弹出快捷菜单
        186      ;(分号)
        187      =键
        188      ,键(逗号)
        189      -键(减号)
        190      .键(句号)
        191      /键
        192      `键(Esc下面)
        219      [键
        220      /键
        221      ]键
        222      '键(引号)
procedure   TForm1.Edit1KeyDown(Sender:   TObject;   var   Key:   Word; 
      Shift:   TShiftState); 
begin 
      if   key=VK_DELETE   then 
        key:=0; 
end; 
Delphi6.0,2000下通过Top
于在keydown中屏蔽掉除数字外的所有键
还应该允许Ctr+C/X/V,所以总结起来应该是: 
     procedure   TForm1.Edit1KeyPress(Sender:   TObject;   var   Key:   Char); 
begin 
     if   not   (Key   in   ['0'..'9',   #3,   #22,   #24,   #8,   #13,   #45])   then   Key   :=   #0; 
end;        
procedure   TForm1.Edit1KeyPress(Sender:   TObject;   var   Key:   Char); 
begin 
      if   (key>#57)   and   (key<#48)   then 
          key:=#0; 
end;         
我想你最好将你的例程写出来。 
        如果是像CKEN阁下说的那样,你要将按键事件屏蔽的话,实际上应该是直接赋值: 
        Key:=0;  
        (注意不是Key:=#0,因为这里的Key是Word类型,在keypress事件中,key的值是Char型,就要用“#”) 
        Good   luck
在KeyDown里面就可以实现 
if   key=vk_numpad0   then   (如果为小键盘的0键就干你想干的事情) 
下面是小键盘的值 
VK_NUMPAD0 0   key   (numeric   keypad) 
VK_NUMPAD1 1   key   (numeric   keypad) 
VK_NUMPAD2 2   key   (numeric   keypad) 
VK_NUMPAD3 3   key   (numeric   keypad) 
VK_NUMPAD4 4   key   (numeric   keypad) 
VK_NUMPAD5 5   key   (numeric   keypad) 
VK_NUMPAD6 6   key   (numeric   keypad) 
VK_NUMPAD7 7   key   (numeric   keypad) 
VK_NUMPAD8 8   key   (numeric   keypad) 
VK_NUMPAD9 9   key   (numeric   keypad) 
VK_MULTIPLY Multiply   key   (numeric   keypad) 
VK_ADD Add   key   (numeric   keypad) 
VK_SEPARATOR Separator   key (numeric   keypad) 
VK_SUBTRACT Subtract   key   (numeric   keypad) 
VK_DECIMAL Decimal   key   (numeric   keypad)   VK_DIVIDE Divide   key   (numeric   keypad)


推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • Silverlight 实战指南:深入解析用户提交数据的验证与捕获机制
    本文深入探讨了Silverlight中用户提交数据的验证与捕获机制,详细分析了四种主要的验证方法:基本异常处理、DataAnnotation注解、IDataErrorInfo客户端同步验证以及自定义验证策略。通过实例解析,帮助开发者更好地理解和应用这些机制,提升应用程序的数据处理能力和用户体验。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
author-avatar
xuzhaotong
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有