2

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

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

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

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

下划线按预期显示。

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

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

这让我很困惑,真的。

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

4

5 回答 5

2

这可能不是德尔福问题。我刚刚在 WinXP 上用 IE8 试过这个。在我的机器上,显示属性设置为需要 Alt 键,下划线按预期工作。但是,如果未选中该复选框,则下划线永远不会出现在主菜单项上(即使使用 Alt 键),但总是出现在 File、Edit、View 等子菜单上(如您所描述的)............除非微软用 Delphi 编写 IE8 :-)

于 2009-08-13T10:05:43.477 回答
1

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

总之,这似乎是一个 Delphi 错误,我将其报告给 Embarcadero: http://qc.embarcadero.com/wc/qcmain.aspx?d= 68816

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

Step 对我的问题的回答是指 Delphi 论坛上报告的一个可能相关的错误: ALT Key press 导致控件在 Vista 和 XP 中的 Themes 下消失。这个被标记为“已解决”,评论中列出了几个可能的修复。我没有机会经历这些。


顺便说一句,自从我去年问过这个问题后,我得到了一台装有 Vista 的新电脑。即使设置了 Vista 轻松访问中心设置:“下划线键盘快捷键和访问键”,同样的问题仍然存在。所以 Delphi 的 bug 仍然存在。

我很惊讶地发现默认设置是未选中。我猜在 Vista 中,他们想要一个看起来更干净的菜单,并假设没有多少人使用过加速键。

于 2009-08-14T00:58:29.653 回答
1

解决此问题的最简单方法似乎是使用 jvcl 中的 TJvMainMenu 而不是 TMainMenu。我尝试了当前版本 3.38,但该问题可能已在早期版本中得到修复。因为无论如何我都在使用 jvcl,所以它并没有增加我的程序大小。不过,您的里程可能会有所不同,jvcl 是一个巨大的库。

于 2009-10-12T19:13:26.187 回答
0

如果可能,对主菜单使用空图像列表。通过这种方式,您可以强制 delphi 正确绘制菜单。(但在vista和w7中看起来很丑)

于 2009-08-13T13:30:06.133 回答
0

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

于 2009-08-13T17:28:16.800 回答