频道分类

delphi 快捷键设置控件: THotKey

作者:admin 来源: 日期:2020/3/9 15:51:09 人气: 标签:

 
运行效果图:

 

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    HotKey1: THotKey;
    Memo1: TMemo;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  HotKey1.Modifiers := [];
  if CheckBox1.Checked then HotKey1.Modifiers := HotKey1.Modifiers + [hkShift];
  if CheckBox2.Checked then HotKey1.Modifiers := HotKey1.Modifiers + [hkCtrl];
  if CheckBox3.Checked then HotKey1.Modifiers := HotKey1.Modifiers + [hkAlt];
  if CheckBox4.Checked then HotKey1.Modifiers := HotKey1.Modifiers + [hkExt];
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  Memo1.Align := alTop;
  Memo1.ScrollBars := ssVertical;
  Memo1.Lines.Add('1、你现在看到的可不是 TEdit, 它是处理快捷键用的 HotKey 控件;');
  Memo1.Lines.Add('2、激活后, 输入几个字母试试;');
  Memo1.Lines.Add('3、按 Ctrl+*; * 表示任意键;');
  Memo1.Lines.Add('4、按 Ctrl+Alt+*;');
  Memo1.Lines.Add('5、按 Shift+Ctrl+* 或 Shift+Alt+* 都可以;');
  Memo1.Lines.Add('6、按 Shift+Ctrl+Alt+* 也可以;');
  Memo1.Lines.Add('7、但按 Shift+* 不可以; 因为 HotKey.InvalidKeys 默认禁止了它;');
  Memo1.Lines.Add('8、不过我们可以用 HotKey.Modifiers 打开它.');
 
  CheckBox1.Caption := 'hkShift';
  CheckBox2.Caption := 'hkCtrl';
  CheckBox3.Caption := 'hkAlt';
  CheckBox4.Caption := 'hkExt';
 
  CheckBox1.Checked := False;
  CheckBox2.Checked := False;
  CheckBox3.Checked := True;
  CheckBox4.Checked := False;
 
  CheckBox2.OnClick := CheckBox1.OnClick;
  CheckBox3.OnClick := CheckBox1.OnClick;
  CheckBox4.OnClick := CheckBox1.OnClick;
end;
 
end.

来源:https://my.oschina.net/hermer/blog/319425

上一篇:delphi package下一篇:没有资料