所以我在下面有一些非常简单的代码。我在多个onclick事件中使用这个函数来传递TMenuItems的标题。
procedure TForm1.BtnClick(Sender: TObject);
begin
TestFrm.MyVar:= TMenuItem(Sender).Caption;
InteractiveSchedulerFrm.ShowModal;
end;
然而,这样做的结果是TestFrm.MyVar字段最终包含了一个原本不存在的“与”符号,而且它总是出现在一个看似随机的位置。
我已经通过替换字符串中的所有&符号暂时修补了这个问题,但我最好奇的是是什么原因导致&符号被放置在字符串中。
示例:
TMenuItem(发送者)。标题= 'TEST';
测试来源我的变量= 'TE&ST'或'&TEST'等
2条答案
按热度按时间uelo1irk1#
&符号是自动添加的,因为您可能已经将菜单的AutoHotKeys属性设置为true(我认为这甚至是默认值)。
你有两个选择:
1.将自动热键设置为false -或-
1.调用StripHotkey(从单元菜单中)以在处理标题之前删除它
我可能会选择2,因为你永远不知道是否有人(未来的你)可能不会将自动热键设置回真。
ct2axkht2#
TMenuItem标题中的“与”符号用于表示菜单项的键盘快捷方式。“与”符号出现在快捷方式字符之前,并在某些情况下为字符加下划线,以确保用户了解该快捷方式。这种类型的字符称为accelerator character。
例如,标题为
&TEST
的TMenuItem可以用Alt+T键触发,而标题为TE&ST
的TMenuItem可以用Alt+S键触发。如果您想在菜单项标题中显示一个“与”符号,则需要使用另一个“与”符号对其进行转义(例如
Bacon && Eggs
)。Here is a link to the first source I found about this feature.