gpt4 book ai didi

delphi - Delphi中OnKeyDown的问题

转载 作者:行者123 更新时间:2023-12-03 07:40:29 28 4
gpt4 key购买 nike

我正在与德尔福合作。我想跟踪按下了哪个键。我正在使用 TForm 的 KeyDown 事件。它工作正常,但问题是,如果我按小写字母,但它会给出该字母的大写字母。如何识别按下的按键是小写还是大写?

最佳答案

如果您想跟踪字母数字键,那么您应该使用KeyPress。试试这个:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage(Key);
end;

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;

要检查 Caps Lock 键是否打开,请使用 IsKeyOn(VK_CAPITAL)。要检查是否按下了 Shift 键,请使用 IsKeyDown(VK_SHIFT)

检查 Shift 键是否按下的另一种方法(仅在 OnKeyDown 事件处理程序中有效)是检查 Shift 中是否有 ssShift,其中 Shift 是该事件处理函数的参数。

(顺便说一句,因为 Caps Lock 开启时的操作会被 Shift 键抵消(也就是说,如果在 Caps Lock 开启时按 Shift+A,则会出现一个“a”插入),测试大写字母时使用的检查是

IsKeyOn(VK_CAPITAL) xor IsKeyDown(VK_SHIFT)

使用异或运算符。)

关于delphi - Delphi中OnKeyDown的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422660/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com