带VCL样式的默认按钮

时间:2015-08-12 21:44:20

标签: delphi

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

  1. 这被认为是一种现代的方式(相对于没有样式的VCL)来呈现默认按钮吗?
  2. 如果这不被视为标准行为,我可以通过策略性地启用/禁用默认按钮在我自己的对话框中解决它,但我想知道我是否错过了一些设置来控制默认按钮和最近关注的按钮之间的关系按钮。有控制这个的设置吗?

1 个答案:

答案 0 :(得分:5)

我怀疑这是一个VCL样式的bug。创建使用标准OS主题的默认VCL应用程序。然后添加两个按钮和一个编辑控件。将其中一个按钮设为默认按钮。

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

但是,如果其中一个按钮具有焦点,则突出显示具有焦点的按钮。那是因为当按钮具有焦点时按 ENTER ,无论是否为默认按钮,都会按下对焦按钮。

规则如下:

  • 如果按钮具有焦点,则会将其突出显示为默认按钮。
  • 如果按钮以外的控件具有焦点,则默认按钮(如果有)会突出显示。

所以,这是应用程序在XE7中的系统主题。非默认按钮具有焦点。

enter image description here

请注意,只突出显示一个按钮,它不是默认按钮。

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

enter image description here

这里我们有默认按钮和带焦点的按钮,两者都突出显示。我认为这是一个错误,应该报告。