【问题标题】:Odd behavior when action assigned to BitBtn分配给 BitBtn 的操作时的奇怪行为
【发布时间】:2012-09-19 05:25:29
【问题描述】:

我有一个分配给 BitBtn 和一个菜单项的操作。 动作的标题是“&Save”(s 上有一个加速键)。此操作的快捷键是“Ctrl+S”。

当我运行应用程序并按下 S 键时,由于加速器而执行操作。我觉得很奇怪。用户看到键盘快捷键是“Ctrl+s”,但仍然使用“s”执行操作。 该程序说了些什么,但做了一些其他的事情——这可以被认为是一个成熟的错误。正确的?

另外,如果有多个具有相似快捷键的操作(ctrl+s、ctrl+shift+s 等)或许多菜单中的项目以 's' 作为加速键,用户会非常困惑为什么 's' 会这样做“保存文件”而不是“保存项目”。

我希望使用 'Ctrl+s' 执行操作。我该怎么做?

(我知道我可以编辑按钮的标题以删除其加速键',但如果我将操作重新分配给按钮,我将不得不记住重新编辑按钮的标题。那里有太多的操作和按钮。)。

【问题讨论】:

  • 如果您的标题是“&Save”,这意味着它应该由 Alt+S 组合触发,如果没有文本编辑框,则可以选择由单个 S 触发。您将选择是想要 Windows 标准加速器(然后放下 Ctrl+S)还是自定义(然后放下加速器)。 &S 在 Windows 中表示 Alt+S。

标签: delphi


【解决方案1】:

这是正常行为。这就是键盘加速器一直以来的工作方式,并且注定要发挥作用。停止 S 键调用按钮单击的方法是移除加速键。

【讨论】:

  • 该死!我希望有一个更“自动化”的解决方案:)
  • 毫无疑问,您可以颠覆加速器的工作方式,但您将发明自己的不同于平台标准的 UI 标准。我知道我经常只按对话框上带下划线的加速键。例如,当我看到一个 Windows 是/否对话框时,我会按下 Y 键并期望对话框消失。
  • “当我看到一个 Windows 是/否对话框时,我会按 Y 键并期望对话框消失” - 是的!完全同意你的看法。但我的情况有点不同。
  • 如果有多个具有相似快捷方式(ctrl+s、ctrl+shift+s 等)的操作或许多菜单以 's' 作为加速键,用户会非常困惑为什么使用 ' s' 确实是“保存文件”而不是“保存项目”。
  • @Altar,如果您在同一级别有多个菜单项具有相同的加速键,您应该将 TMenu(Item).AutoHotKeys 设置为 maAutomatic 或调用 TMenuItem.RethinkHokeys 来解决该问题。
猜你喜欢
  • 2019-10-19
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
  • 2020-06-25
相关资源
最近更新 更多