繁体   English   中英

为什么我在Delphi TMainMenu中没有获得热键下划线

[英]Why don't I get hotkey underlines in a Delphi TMainMenu

在Delphi 2007程序中,我正在使用TMainMenu引用TAction列表中的动作。 我在所有主要字幕的热键前都加上了&号:

&File | &Edit | Ev&aluate | ...

在设计视图中,这些热键如我期望的那样带有下划线,但是当我启动程序时,它们不再带下划线,但是它们仍然可以工作。 与此相反,对于所有子菜单图标

  &File
  &New ...
  &Open ...

下划线显示为预期。

我知道Windows pisplay属性选项“隐藏带下划线的字母或键盘导航,直到按下Alt键。” 并禁用了它。 在所有其他程序中,包括Delphi IDE,都可以正常工作。

如果我创建一个新的VCL应用程序并仅添加一个TMainMenu和一些菜单项,则它将按预期工作。

真的,这让我感到困惑。

TMainMenu组件是否有任何属性,或者我必须更改的应用程序选项? 由于某些原因,“启用运行时主题”项目选项显示为灰色,这可能是问题所在吗? 如果是,是什么原因造成的?

这可能不是Delphi的问题。 我刚刚在WinXP上使用IE8进行了尝试。 在我的机器上,将显示属性设置为要求使用Alt键,下划线将按预期工作。 但是,如果未选中此复选框,则下划线永远不会出现在主菜单项上(即使使用Alt键也是如此),而始终会出现在File,Edit,View等子菜单中(如您所述)。除非微软用Delphi编写IE8 :-)

去年我问了同样的问题,有一些很好的答案: 菜单加速键没有显示在Delphi 2009中

总之,它似乎是Delphi的错误,我将其报告给了Embarcadero, 网址为: http : //qc.embarcadero.com/wc/qcmain.aspx?d=68816

但是,他们对此没有解决方案,因此除非其他人(也许您)也抱怨,否则我希望它不会得到解决。

斯蒂芬回答我的问题的方式是,在Delphi论坛上报告了一个可能相关的错误: ALT键的按下导致控件在Vista和XP中的“主题”下消失 该注释被标记为“已解决”,并在注释中列出了几种可能的修复。 我没有机会经历这些。


顺便说一句,自从去年问这个问题以来,我买了一台装有Vista的新计算机。 即使设置了Vista轻松访问中心设置:“下划线键盘快捷键和访问键”,也会出现相同的问题。 因此,Delphi错误仍然存​​在。

我很惊讶地发现默认值是未选中。 我猜想在Vista中,他们希望菜单看起来更整洁,并假设没有多少人使用过加速键。

解决此问题的最简单方法似乎是使用jvcl中的TJvMainMenu而不是TMainMenu。 我尝试使用当前的版本3.38,但是有可能该问题已在较早版本中得到解决。 由于我一直在使用jvcl,因此它不会增加程序的大小。 尽管您的里程可能会有所不同,但是jvcl是一个庞大的图书馆。

如果可能,将一个空图像列表用于主菜单。 这样,您可以强制delphi正确绘制菜单。 (但在Vista和W7中看起来很丑)

您确定在MainMenu中没有将OwnerDraw设置为true吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM