Him*_*dri 2 delphi case keydown
我正在使用Delphi.我想跟踪按下哪个键.我正在使用TForm的KeyDown事件.它工作正常,但问题是,如果我按下并小写字母,虽然它给了我这封信的大写.如何识别按下的键是小写还是大写?
And*_*and 14
如果要跟踪字母数字键,则应使用KeyPress
.试试这个:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage(Key);
end;
Run Code Online (Sandbox Code Playgroud)
问题KeyDown
是对按键的响应是肯定的,如果你想在键盘上输入"K"或"k",你按下相同的按钮,对吧?因此,如果您想要坚持KeyDown
,那么您需要单独检查Caps Lock键是否已打开,或者是否按下Shift键.要测试切换键(如Caps Lock)是否打开,或者是否按下常规键,您可以使用
function IsKeyDown(const VK: integer): boolean;
begin
IsKeyDown := GetKeyState(VK) and $8000 <> 0;
end;
function IsKeyOn(const VK: Integer): boolean;
begin
IsKeyOn := GetKeyState(VK) and 1 = 1;
end;
Run Code Online (Sandbox Code Playgroud)
要检查Caps Lock键是否已打开,请使用IsKeyOn(VK_CAPITAL)
.要检查是否按下了shift键,请使用IsKeyDown(VK_SHIFT)
.
检查是否按下shift键的另一种方法(仅在OnKeyDown
事件处理程序中起作用)是检查该事件处理函数的参数是否ssShift in Shift
在哪里Shift
.
(顺便说一句,因为Caps Lock的操作被Shift键抵消了(也就是说,当Caps Lock打开时按Shift + A,插入一个小的 "a"),检查时使用的检查对于首都来说
IsKeyOn(VK_CAPITAL) xor IsKeyDown(VK_SHIFT)
Run Code Online (Sandbox Code Playgroud)
使用xor运算符.)
归档时间: |
|
查看次数: |
3231 次 |
最近记录: |