考虑窗口句柄的例子中不提供VCL的消息,为此,我们使用WM_HOTKEY。此消息是由注册窗口在Windows热键,允许在程序响应它,即使没有输入焦点发送:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
// Declare a event handler
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
// Registering a hotkey Ctrl+Alt+F5
RegisterHotKey(Handle, 0, MOD_CONTROL or MOD_ALT, VK_F5);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Unregisters a hotkey
UnRegisterHotKey(Handle, 0);
end;
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
// This procedure is called when a window message WM_HOTKEY
inherited; // We give the form to process the message,
// if she already has its handler
Beep; // We perform additional actions
end;
通常情况下,是在做你希望的东西没有问题。它只是自动工作。由于您正在使用动作管理器,因此您应该使用'TAction'的'ShortCut'属性,而不是'TMenuItem'。 – 2012-07-24 06:06:56
是的,只需分配ShortCut属性即可。 – 2012-07-24 07:42:34
将菜单项视为“呈现静态定义的动作的一种动态构建方式”,因此,我设置了我的操作,而不是我的菜单项属性。菜单项属性来自动作列表或动作管理器,并向外传播。 – 2012-07-24 13:32:04