我刚从Delphi 2009升级到Delphi XE8。这样做改变了程序工具栏上按钮的外观。
使用Delphi 2009编译时,它看起来像这样:
但现在使用Delphi XE8,它看起来像这样:
在我看来,这与Down属性有关。如果按钮的Down属性为true,则其背景将为蓝色。如果我点击按钮,那么会将Down属性更改为false,按钮将失去蓝色背景。
有谁知道可能导致蓝色背景的原因以及如何消除它?
我在Windows 8.1上。
跟进:David回答这是Windows 8.1的默认显示是正确的。检查其他程序,我看到他们也这样做了。
我没想到这是默认值,因为我用Delphi 2009编译的程序没有这样做。但正如大卫也解释的那样,那是因为Delphi 2009并没有内置主题支持,而是Delphi XE8。 (它可能已在Delphi XE2中添加,但不引用我的内容)
大卫提到了清单是可能的原因。这不是在这种情况下,但他提醒我,我可能有多个清单,应该检查它。
所以我的问题的最终答案是我不想消除蓝色背景。它是Windows 8.1默认显示向下按钮的方式,我想通过我的程序显示本机主题。
答案 0 :(得分:2)
您的D2009程序不是主题,但您的XE8程序是主题。我的意思是XE8包含一个应用程序清单,它指定了comctl32的版本6。您的D2009程序不包含清单,或者不包括请求comctl32版本6的清单部分。
XE8程序的视觉外观是原生平台外观,从表面上看,遵循平台的领先是正常的。所以我选择的选项是将外观保留为平台标准。这与XE8版本一致。
但是,要回答您的问题,您可以通过删除清单的comctl32 v6部分来恢复旧外观。这也会影响程序的其他部分。如果您只想禁用工具栏的主题,可以使用SetWindowTheme
。