运行效果图:
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.