Delphi 带有VCL样式的默认按钮

Delphi 带有VCL样式的默认按钮,delphi,Delphi,我对默认值为:=True的tButton的样式感到困惑。问题是,至少在某些样式(例如,Luna)中,最近聚焦的按钮高亮显示为橙色,这与默认按钮使用的样式相同。因此,我担心用户可能会混淆哪个按钮是默认按钮,或者至少会认为突出显示两个按钮很奇怪。这种行为可以在XE7中看到(根据评论,也可以在XE8中看到)。 问题: 这是否被认为是一种显示默认按钮的现代方式(相对于非样式VCL) 如果这不是标准行为,我可以在自己的对话框中通过策略性地启用/禁用默认按钮来解决它,但我想知道我是否错过了一些控制默认按钮和

我对默认值为:=True的tButton的样式感到困惑。问题是,至少在某些样式(例如,Luna)中,最近聚焦的按钮高亮显示为橙色,这与默认按钮使用的样式相同。因此,我担心用户可能会混淆哪个按钮是默认按钮,或者至少会认为突出显示两个按钮很奇怪。这种行为可以在XE7中看到(根据评论,也可以在XE8中看到)。 问题:

  • 这是否被认为是一种显示默认按钮的现代方式(相对于非样式VCL)
  • 如果这不是标准行为,我可以在自己的对话框中通过策略性地启用/禁用默认按钮来解决它,但我想知道我是否错过了一些控制默认按钮和最近焦点按钮之间关系的设置。是否有控制此操作的设置
    我怀疑这是一个VCL风格的错误。创建使用标准操作系统主题的默认VCL应用程序。然后添加两个按钮和一个编辑控件。使其中一个按钮成为默认按钮

    现在使用tab键循环焦点。当编辑控件具有焦点时,默认按钮高亮显示。这表示如果按ENTER键,则该按钮将被按下

    但是,如果任一按钮具有焦点,则具有焦点的按钮将高亮显示。这是因为如果在按钮具有焦点时按ENTER键,则无论是否为默认按钮,焦点按钮都会被按下

    规则如下:

    • 如果某个按钮具有焦点,它将作为默认按钮高亮显示
    • 如果按钮以外的控件具有焦点,则会高亮显示默认按钮(如果有)
    下面是XE7中应用程序的系统主题。非默认按钮具有焦点

    请注意,只有一个按钮高亮显示,它不是默认按钮

    这是XE7中与Luna风格相同的应用程序


    这里有默认按钮和带焦点的按钮,两者都高亮显示。我认为这是一个bug,应该报告。

    在XE7中,使用您描述的测试。选项卡切换到非默认按钮会同时突出显示默认和非默认按钮。是否使用VCL样式?是的,这就是问题所在。但是在我的带有操作系统主题的Windows 10系统上,它的行为与答案中描述的一样。你在XE8中测试过这个吗,@David?如果是,该错误是否存在?我刚刚在XE2中测试过,但该错误似乎不在该版本中。已确认为XE8中的错误。在XE4和XE5中正常工作,但我无法检查XE6。这对那些支持rort为bug修复付费的人来说一定是一种解脱。我的意思是,至少那些混蛋。。嗯,当(如果?)Embarcadero解决这个问题时,客户将得到他们的钱。这确实让人怀疑,如果Embarcadero没有像他们声称的那样“关注质量”,尤其是在过去的几个版本中,特别是在XE8中,情况会如何。事实证明,XE5和XE6中没有出现这种确切的错误,但类似的错误也存在。XE5和XE6中的变体是,当另一个控件具有焦点时,默认按钮不会高亮显示。例如,在上面的@DavidHeffernan示例中,当编辑控件具有焦点时(在XE5或XE6中编译时),默认按钮不会高亮显示。我没有测试过XE3或XE4。