gpt4 book ai didi

Delphi - 检测同时按下3个键

转载 作者:行者123 更新时间:2023-12-03 14:45:11 24 4
gpt4 key购买 nike

我想检测在表单中按下 3 个键,例如 Ctrl+C+N...我需要输入的表单检测始终以 Ctrl 开头,接下来是两个字母。

我该怎么做?

最佳答案

其中一个键到达后,您可以查看另一个键是否已按下。例如:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Shift = [ssCtrl] then begin
case Key of
Ord('C'):
if (GetKeyState(Ord('N')) and $80) = $80 then
ShowMessage('combo');
Ord('N'):
if (GetKeyState(Ord('C')) and $80) = $80 then
ShowMessage('combo');
end;
end;
end;


但是,这也会检测例如 N+Ctrl+C,一个不以 < 开头的序列kbd>Ctrl 键。如果这不符合有效的按键组合,您可以借助标志来保留一些按键历史记录。以下内容应仅检测最初以 Ctrl 开头的序列:

type
TForm1 = class(TForm)
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
private
FValidKeyCombo: Boolean;
end;

...

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if FValidKeyCombo and (Shift = [ssCtrl]) then
case Key of
Ord('C'):
if (GetKeyState(Ord('N')) and $80) = $80 then
ShowMessage('combo');
Ord('N'):
if (GetKeyState(Ord('C')) and $80) = $80 then
ShowMessage('combo');
end;
FValidKeyCombo := (Shift = [ssCtrl]) and (Key in [Ord('C'), Ord('N')]);
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
FValidKeyCombo := False;
end;

关于Delphi - 检测同时按下3个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14926453/

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