Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建没有相应菜单项的Delphi应用程序快捷方式_Delphi_Menu_Shortcut_Taction_Tmenuitem - Fatal编程技术网

创建没有相应菜单项的Delphi应用程序快捷方式

创建没有相应菜单项的Delphi应用程序快捷方式,delphi,menu,shortcut,taction,tmenuitem,Delphi,Menu,Shortcut,Taction,Tmenuitem,我想在我的应用程序中使用快捷键组合(如Ctrl+Alt+D)来调用函数,但我不希望快捷键出现在任何菜单上。你的应用程序中是否可能有一个不可见的快捷方式 是的,这是可能的。必须在窗体中添加TAction类的对象。 您可以为Taction指定键盘快捷键,然后将代码放入event OneExecute of the Taction中 请注意,您不能直接向表单中添加Taction,必须在表单中添加TactionList,然后才能向TactionList中添加Taction。您可以将组件的事件用于此任务

我想在我的应用程序中使用快捷键组合(如Ctrl+Alt+D)来调用函数,但我不希望快捷键出现在任何菜单上。你的应用程序中是否可能有一个不可见的快捷方式

是的,这是可能的。必须在窗体中添加TAction类的对象。 您可以为Taction指定键盘快捷键,然后将代码放入event OneExecute of the Taction中

请注意,您不能直接向表单中添加Taction,必须在表单中添加TactionList,然后才能向TactionList中添加Taction。

您可以将组件的事件用于此任务

检查此代码

procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey;
  var Handled: Boolean);
begin
  if (Msg.CharCode = Ord('D')) and (HiWord(Msg.KeyData) and KF_ALTDOWN <> 0) and  (GetKeyState(VK_CONTROL) < 0) then
  begin
    ShowMessage('Ctrl+Alt+D Pressed') ;
    Handled := true;
  end;
end;
程序TForm1.ApplicationEvents1ShortCut(var Msg:TWMKey;
变量:布尔值);
开始
如果(Msg.CharCode=Ord('D'))和(HiWord(Msg.KeyData)和KF_ALTDOWN 0)和(GetKeyState(VK_控制)<0),则
开始
显示消息('Ctrl+Alt+D按下');
已处理:=真;
结束;
结束;

非常好。这是一种享受,不涉及任何动作组件。如果您已经在表单上的其他动作中使用了一个TActionList,只需添加另一个带有所需快捷方式的TAction就可以更优雅,并提高可读性。(正如Giacomo Degli Esposti所建议的那样)我没有使用ActionList,尽管我可能应该使用,但它是一款在我知道它们是什么之前就开始使用的应用程序,我从来没有花足够的精力去重新安装它们。