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