Delphi   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了德尔福 – 检测同时按下3个键大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的表单中检测按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,这是一个不以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;

大佬总结

以上是大佬教程为你收集整理的德尔福 – 检测同时按下3个键全部内容,希望文章能够帮你解决德尔福 – 检测同时按下3个键所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。