delphi key值表

本文详细介绍了Delphi中TShiftState类型及其意义,以及各种键盘按键的对应值,如Ctrl、Shift、鼠标键的状态。同时,讲解了KeyDown、KeyPress和KeyUp事件的区别和使用场景,包括如何在这些事件中处理键盘按键,特别是组合键的识别。此外,还列举了常见的虚拟键值,如F1-F12、方向键、数字键等,并提供了模拟鼠标和键盘操作的方法。
摘要由CSDN通过智能技术生成

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 }
{ KaTeX parse error: Expected 'EOF', got '}' at position 23: …LSYM VK_LBUTTON}̲ VK_LBUTTON = 1…EXTERNALSYM VK_RBUTTON}
VK_RBUTTON = 2;
{ KaTeX parse error: Expected 'EOF', got '}' at position 22: …ALSYM VK_CANCEL}̲ VK_CANCEL = 3;…EXTERNALSYM VK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值