Delphi 如何在FMX中使用快捷键(数字键或+;/)创建TMenuItem钥匙

Delphi 如何在FMX中使用快捷键(数字键或+;/)创建TMenuItem钥匙,delphi,firemonkey,Delphi,Firemonkey,我正在尝试复制类似于下面显示的Inkscape缩放快捷方式的内容。请注意,无论是否使用数字键盘,这些Inkscape快捷方式都有效 第一个问题是,无法通过“对象检查器”设置快捷方式,因为如果没有修改键,这些键本身就没有选项。然后,我尝试在运行时设置快捷方式,如下所示。这将在菜单中显示快捷键编号,但快捷键不起作用。我按下数字键,无论是否使用数字键盘,都不会发生任何事情(如果我单击菜单项,菜单项会正常工作)。+和-快捷方式也不起作用 另一个问题是由于某种原因,-快捷方式在菜单中显示为'-',而+快

我正在尝试复制类似于下面显示的Inkscape缩放快捷方式的内容。请注意,无论是否使用数字键盘,这些Inkscape快捷方式都有效

第一个问题是,无法通过“对象检查器”设置快捷方式,因为如果没有修改键,这些键本身就没有选项。然后,我尝试在运行时设置快捷方式,如下所示。这将在菜单中显示快捷键编号,但快捷键不起作用。我按下数字键,无论是否使用数字键盘,都不会发生任何事情(如果我单击菜单项,菜单项会正常工作)。
+
-
快捷方式也不起作用

另一个问题是由于某种原因,
-
快捷方式在菜单中显示为
'-'
,而
+
快捷方式显示为
'='
,因为它是同一个键。我也尝试过使用
TextToShortcut()
,但没有成功

这在FMX中是可能的,还是我必须使用功能键?我更喜欢与Inkscape保持一致。我可以处理表单的
OnKeyDown
事件中的按键操作,但是如何在菜单中正确显示快捷键(菜单项的右侧)

MenuItem1.ShortCut:=vkEqual;
MenuItem2.ShortCut:=vkMinus;
MenuItem3.ShortCut:=vk1;
MenuItem4.1快捷方式:=vk2;
MenuItem5.ShortCut:=vk5;
MenuItem6.1快捷方式:=vk3;
MenuItem7.ShortCut:=vk4;

您可以从源代码执行此操作:

item1.ShortCut := 8299;

因为TmenuItem的快捷方式是TShortCut,这是 t短切=低(字)…高(字)

它是key和Fkey的简单和:

Shift - 8192 

Ctrl - 16384

Alt - 32768


So we have 8299 = 
"numpad +" = 107 +
Shift = 8192
要使用“+”和“数字+”,请使用连接到菜单项的操作:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Action1.Caption := 'Click'+#9+'+';
  Action1.SecondaryShortCuts.Add('Shift+=');
  Action1.SecondaryShortCuts.Add('Num +');
end;
致以最诚挚的问候

Moskw@

您可以从以下来源执行此操作:

item1.ShortCut := 8299;

因为TmenuItem的快捷方式是TShortCut,这是 t短切=低(字)…高(字)

它是key和Fkey的简单和:

Shift - 8192 

Ctrl - 16384

Alt - 32768


So we have 8299 = 
"numpad +" = 107 +
Shift = 8192
要使用“+”和“数字+”,请使用连接到菜单项的操作:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Action1.Caption := 'Click'+#9+'+';
  Action1.SecondaryShortCuts.Add('Shift+=');
  Action1.SecondaryShortCuts.Add('Num +');
end;
致以最诚挚的问候

Moskw

我想我自己已经回答了部分问题。我可以使用制表符设置菜单项中的快捷方式文本。MenuItem1.Text:=MenuItem1.Text++#9++。然后,我可以在FormKeyDown事件中处理快捷方式的执行。但是,我仍然想知道是否可以设置这些快捷方式,使它们自动工作。您是否尝试过
+
vkAdd
-
vkSubtract
?看,是的,这些代表数字键盘键,但它们仍然不起作用。我现在已经解决了上述问题。似乎除了在FormKeyDown中处理关键事件之外别无选择。我想我自己已经回答了部分问题。我可以使用制表符设置菜单项中的快捷方式文本。MenuItem1.Text:=MenuItem1.Text++#9++。然后,我可以在FormKeyDown事件中处理快捷方式的执行。但是,我仍然想知道是否可以设置这些快捷方式,使它们自动工作。您是否尝试过
+
vkAdd
-
vkSubtract
?看,是的,这些代表数字键盘键,但它们仍然不起作用。我现在已经解决了上述问题。似乎除了在FormKeyDown中处理键事件之外别无选择。谢谢,但我不想要shift,只要+。item1.ShortCut:=107;或者item1.ShortCut:=vk_add这是我已经尝试过的,但是这个快捷方式根本不起作用。不管怎样,我现在已经通过处理FormKeyDown中的按键操作解决了这个问题。它正在工作。您需要简单的添加项1。快捷方式:=107;在OnCreate()中或在需要的位置/时间。我发布了一个带有图片的答案,但被版主删除了(为什么?)。我想让快捷键在使用数字键盘或普通键盘键(并非所有笔记本电脑键盘都有数字键盘)上的数字或+/-时起作用。我不认为你的答案对两者都适用。我不知道为什么它被删除了。我认为唯一的解决办法是我的工作方式,这很好。谢谢,但我不想要移位,只要+。item1.ShortCut:=107;或者item1.ShortCut:=vk_add这是我已经尝试过的,但是这个快捷方式根本不起作用。不管怎样,我现在已经通过处理FormKeyDown中的按键操作解决了这个问题。它正在工作。您需要简单的添加项1。快捷方式:=107;在OnCreate()中或在需要的位置/时间。我发布了一个带有图片的答案,但被版主删除了(为什么?)。我想让快捷键在使用数字键盘或普通键盘键(并非所有笔记本电脑键盘都有数字键盘)上的数字或+/-时起作用。我不认为你的答案对两者都适用。我不知道为什么它被删除了。我认为唯一的解决办法是我做这件事的方式,这很好。