delphi中的按键说明.docx
《delphi中的按键说明.docx》由会员分享,可在线阅读,更多相关《delphi中的按键说明.docx(9页珍藏版)》请在冰点文库上搜索。
delphi中的按键说明
Delphi中一些常用的组合键值
CTRL+A:
#1CTRL+B:
#2CTRL+C:
#3CTRL+D:
#4CTRL+E:
#5CTRL+F:
#6CTRL+G:
#7
CTRL+H:
#8CTRL+I:
#9CTRL+J:
#10CTRL+K:
#11CTRL+L:
#12CR:
#13CTRL+N:
#14
CTRL+O:
#15CTRL+P:
#16CTRL+Q:
#17CTRL+R:
#18CTRL+S:
#19CTRL+T:
#20
CTRL+U:
#21CTRL+V:
#22CTRL+W:
#23CTRL+X:
#24CTRL+Y:
#25CTRL+Z:
#26ESC:
#27
CTRL+:
#28CTRL+]:
#29SHIFT+CTRL+-:
#30DEL:
#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:
CharAscii字符
//例如F1-F10只有onKeydown有反应
另外TWincontrol. KeyPreview:
Boolean属性确定控件是否在子控件之前处理按键。
比如说enter键,
onkeypress事件
if key=#13 then //当你按下enter键时触发该事件
do something
onkeydown事件
if key=13 then //当你按下enter键时触发该事件
do something
其中所有的KeyDown事件里面应该用如下判断:
ifKey=VK_RETURNthen
...
所有的KeyPress事件里面应该用如下判断:
ifKey=#13then
...
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;
procedureTForm1.FormKeyDown(Sender:
TObject;varKey:
Word;
Shift:
TShiftState);
begin
Showmessage(IntToStr(Key));
end;
procedureTForm1.FormKeyPress(Sender:
TObject;varKey:
Char);
begin
Showmessage(IntToStr(Ord(Key)));
end;
{VirtualKeys,StandardSet}
{$EXTERNALSYMVK_LBUTTON}
VK_LBUTTON=1;
{$EXTERNALSYMVK_RBUTTON}
VK_RBUTTON=2;
{$EXTERNALSYMVK_CANCEL}
VK_CANCEL=3;
{$EXTERNALSYMVK_MBUTTON}
VK_MBUTTON=4;{NOTcontiguouswithL&RBUTTON}
{$EXTERNALSYMVK_BACK}
VK_BACK=8;
{$EXTERNALSYMVK_TAB}
VK_TAB=9;
{$EXTERNALSYMVK_CLEAR}
VK_CLEAR=12;
{$EXTERNALSYMVK_RETURN}
VK_RETURN=13;
{$EXTERNALSYMVK_SHIFT}
VK_SHIFT=$10;
{$EXTERNALSYMVK_CONTROL}
VK_CONTROL=17;
{$EXTERNALSYMVK_MENU}
VK_MENU=18;
{$EXTERNALSYMVK_PAUSE}
VK_PAUSE=19;
{$EXTERNALSYMVK_CAPITAL}
VK_CAPITAL=20;
{$EXTERNALSYMVK_KANA}
VK_KANA=21;
{$EXTERNALSYMVK_HANGUL}
VK_HANGUL=21;
{$EXTERNALSYMVK_JUNJA}
VK_JUNJA=23;
{$EXTERNALSYMVK_FINAL}
VK_FINAL=24;
{$EXTERNALSYMVK_HANJA}
VK_HANJA=25;
{$EXTERNALSYMVK_KANJI}
VK_KANJI=25;
{$EXTERNALSYMVK_CONVERT}
VK_CONVERT=28;
{$EXTERNALSYMVK_NONCONVERT}
VK_NONCONVERT=29;
{$EXTERNALSYMVK_ACCEPT}
VK_ACCEPT=30;
{$EXTERNALSYMVK_MODECHANGE}
VK_MODECHANGE=31;
{$EXTERNALSYMVK_ESCAPE}
VK_ESCAPE=27;
{$EXTERNALSYMVK_SPACE}
VK_SPACE=$20;
{$EXTERNALSYMVK_PRIOR}
VK_PRIOR=33;
{$EXTERNALSYMVK_NEXT}
VK_NEXT=34;
{$EXTERNALSYMVK_END}
VK_END=35;
{$EXTERNALSYMVK_HOME}
VK_HOME=36;
{$EXTERNALSYMVK_LEFT}
VK_LEFT=37;
{$EXTERNALSYMVK_UP}
VK_UP=38;
{$EXTERNALSYMVK_RIGHT}
VK_RIGHT=39;
{$EXTERNALSYMVK_DOWN}
VK_DOWN=40;
{$EXTERNALSYMVK_SELECT}
VK_SELECT=41;
{$EXTERNALSYMVK_PRINT}
VK_PRINT=42;
{$EXTERNALSYMVK_EXECUTE}
VK_EXECUTE=43;
{$EXTERNALSYMVK_SNAPSHOT}
VK_SNAPSHOT=44;
{$EXTERNALSYMVK_INSERT}
VK_INSERT=45;
{$EXTERNALSYMVK_DELETE}
VK_DELETE=46;
{$EXTERNALSYMVK_HELP}
VK_HELP=47;
{VK_0thruVK_9arethesameasASCII’0’thru’9’($30-$39)}
{VK_AthruVK_ZarethesameasASCII’A’thru’Z’($41-$5A)}
{$EXTERNALSYMVK_LWIN}
VK_LWIN=91;
{$EXTERNALSYMVK_RWIN}
VK_RWIN=92;
{$EXTERNALSYMVK_APPS}
VK_APPS=93;
{$EXTERNALSYMVK_NUMPAD0}
VK_NUMPAD0=96;
{$EXTERNALSYMVK_NUMPAD1}
VK_NUMPAD1=97;
{$EXTERNALSYMVK_NUMPAD2}
VK_NUMPAD2=98;
{$EXTERNALSYMVK_NUMPAD3}
VK_NUMPAD3=99;
{$EXTERNALSYMVK_NUMPAD4}
VK_NUMPAD4=100;
{$EXTERNALSYMVK_NUMPAD5}
VK_NUMPAD5=101;
{$EXTERNALSYMVK_NUMPAD6}
VK_NUMPAD6=102;
{$EXTERNALSYMVK_NUMPAD7}
VK_NUMPAD7=103;
{$EXTERNALSYMVK_NUMPAD8}
VK_NUMPAD8=104;
{$EXTERNALSYMVK_NUMPAD9}
VK_NUMPAD9=105;
{$EXTERNALSYMVK_MULTIPLY}
VK_MULTIPLY=106;
{$EXTERNALSYMVK_ADD}
VK_ADD=107;
{$EXTERNALSYMVK_SEPARATOR}
VK_SEPARATOR=108;
{$EXTERNALSYMVK_SUBTRACT}
VK_SUBTRACT=109;
{$EXTERNALSYMVK_DECIMAL}
VK_DECIMAL=110;
{$EXTERNALSYMVK_DIVIDE}
VK_DIVIDE=111;
{$EXTERNALSYMVK_F1}
VK_F1=112;
{$EXTERNALSYMVK_F2}
VK_F2=113;
{$EXTERNALSYMVK_F3}
VK_F3=114;
{$EXTERNALSYMVK_F4}
VK_F4=115;
{$EXTERNALSYMVK_F5}
VK_F5=116;
{$EXTERNALSYMVK_F6}
VK_F6=117;
{$EXTERNALSYMVK_F7}
VK_F7=118;
{$EXTERNALSYMVK_F8}
VK_F8=119;
{$EXTERNALSYMVK_F9}
VK_F9=120;
{$EXTERNALSYMVK_F10}
VK_F10=121;
{$EXTERNALSYMVK_F11}
VK_F11=122;
{$EXTERNALSYMVK_F12}
VK_F12=123;
{$EXTERNALSYMVK_F13}
VK_F13=124;
{$EXTERNALSYMVK_F14}
VK_F14=125;
{$EXTERNALSYMVK_F15}
VK_F15=126;
{$EXTERNALSYMVK_F16}
VK_F16=127;
{$EXTERNALSYMVK_F17}
VK_F17=128;
{$EXTERNALSYMVK_F18}
VK_F18=129;
{$EXTERNALSYMVK_F19}
VK_F19=130;
{$EXTERNALSYMVK_F20}
VK_F20=131;
{$EXTERNALSYMVK_F21}
VK_F21=132;
{$EXTERNALSYMVK_F22}
VK_F22=133;
{$EXTERNALSYMVK_F23}
VK_F23=134;
{$EXTERNALSYMVK_F24}
VK_F24=135;
{$EXTERNALSYMVK_NUMLOCK}
VK_NUMLOCK=144;
{$EXTERNALSYMVK_SCROLL}
VK_SCROLL=145;
{VK_L&VK_R-leftandrightAlt,CtrlandShiftvirtualkeys.
UsedonlyasparameterstoGetAsyncKeyState()andGetKeyState().
NootherAPIormessagewilldistinguishleftandrightkeysinthisway.}
{$EXTERNALSYMVK_LSHIFT}
VK_LSHIFT=160;
{$EXTERNALSYMVK_RSHIFT}
VK_RSHIFT=161;
{$EXTERNALSYMVK_LCONTROL}
VK_LCONTROL=162;
{$EXTERNALSYMVK_RCONTROL}
VK_RCONTROL=163;
{$EXTERNALSYMVK_LMENU}
VK_LMENU=164;
{$EXTERNALSYMVK_RMENU}
VK_RMENU=165;
{$EXTERNALSYMVK_PROCESSKEY}
VK_PROCESSKEY=229;
{$EXTERNALSYMVK_ATTN}
VK_ATTN=246;
{$EXTERNALSYMVK_CRSEL}
VK_CRSEL=247;
{$EXTERNALSYMVK_EXSEL}
VK_EXSEL=248;
{$EXTERNALSYMVK_EREOF}
VK_EREOF=249;
{$EXTERNALSYMVK_PLAY}
VK_PLAY=250;
{$EXTERNALSYMVK_ZOOM}
VK_ZOOM=251;
{$EXTERNALSYMVK_NONAME}
VK_NONAME=252;
{$EXTERNALSYMVK_PA1}
VK_PA1=253;
{$EXTERNALSYMVK_OEM_CLEAR}
VK_OEM_CLEAR=254;
:
),其实不用记,你不是用delphi吗,在ide里面输入vk_f1总会吧,然后按住ctrl键
单击刚才你输入的vk_f1,就会出来啦!
至于key:
char的值,就是key:
word的ascII码,你可以看chr(vk_f1),chr(vk_enter),都可以哈!