Delphi 工具栏样式已更改

标签 delphi button toolbar

我刚刚从 Delphi 2009 升级到 Delphi XE8。这样做改变了我程序工具栏上按钮的外观。

使用 Delphi 2009 编译时,它看起来像这样:
enter image description here

但是现在使用 Delphi XE8,它看起来像这样:
enter image description here

在我看来,这与 Down 属性有关。如果按钮的 Down 属性为 true,则其背景将为蓝色。如果我单击该按钮,那么这会将 Down 属性更改为 false,并且该按钮将失去蓝色背景。

有谁知道可能导致蓝色背景的原因以及如何消除它?

我在 Windows 8.1 上。

跟进:大卫关于这是 Windows 8.1 的默认显示的回答是正确的。检查其他程序,我看到他们也这样做。

我没想到这是默认设置,因为我用 Delphi 2009 编译的程序没有这样做。但正如 David 还解释的那样,这是因为 Delphi 2009 没有内置主题支持,但 Delphi XE8 有。 (它可能已在 Delphi XE2 中添加,但不要引用我的话)

大卫提到 list 是一个可能的原因。在这种情况下不是这样,但他提醒我我可能有多个 list ,应该检查一下。

所以我的问题的最终答案是我不想消除蓝色背景。这是 Windows 8.1 默认显示向下按钮的方式,我想通过我的程序显示 native 主题。

最佳答案

您的 D2009 程序没有主题,但您的 XE8 程序是主题。我的意思是 XE8 包含一个应用程序 list ,它指定了 comctl32 的版本 6。您的 D2009 程序不包括 list ,或者不包括 list 中请求 comctl32 版本 6 的那部分。

XE8程序的视觉外观是原生平台的外观,从表面上看,跟随平台的引导是正常的。所以我会选择的选项是将外观作为平台标准。这是与 XE8 版本一起使用的。

但是,要回答您的问题,您可以通过删除 list 的 comctl32 v6 部分恢复到旧外观。这也会影响程序的其他部分。如果您只想禁用工具栏的主题,可以使用 SetWindowTheme 来实现。 .

关于Delphi 工具栏样式已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256566/

相关文章:

delphi - Delphi 的 $WARN 编译器指令的标识符

python - wxPython -- 如何在某些事件(例如单击)中更新 BitmapButton 的边框样式

android - 是否可以制作 Google Photos 风格的搜索栏?

java - 如何识别哪个菜单项被禁用?

c# - SetSupportActionBar 在 Visual Studio 和 Xamarin 中崩溃

Delphi 格式字符串 - 宽度和精度值的限制?

php - 创建从 PHP 到 Delphi 的应用程序打印队列

delphi - 是否可以在 Synchronize 内部使用简单的循环?

testing - SAPUI5 OPA 测试 - 消息框 - 错误

java - 如何在其余代码之前执行一行代码?更改按钮上的文本