【问题标题】:Delphi Toolbar Style ChangedDelphi 工具栏样式已更改
【发布时间】:2015-07-06 22:12:36
【问题描述】:

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

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

但现在使用 Delphi XE8,它看起来像这样:

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

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

我使用的是 Windows 8.1。


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

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

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

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

【问题讨论】:

  • 一个版本是主题,另一个不是?
  • @DavidHeffernan - 我不使用主题。我的 Delphi 2009 程序只是在 Delphi XE8 中运行(仅修复了需要修复的内容以使其工作)。 Toolbar 是一个简单的 TToolbar,每个 Button 都是一个简单的 TToolButton。我没有对表格进行任何更改。如果有帮助,我可以提供一些相关的 DFM 文本。
  • @DavidHeffernan - 我做了一个测试:我添加了一个新的 TToolbar。我添加了一些 TToolButtons 到它。在 ToolButton 的 Object Inspector 中,我将 Down 设置为 true,背景变为蓝色。我取消选中 Down 将其设置回 false 并且蓝色消失了。
  • 应用是否为主题?你有 comctl32 v6 清单吗?
  • 我刚刚重新发现了我几年前提出的一个问题,并且可能涉及到我的“解决方案”。我会调查的。 stackoverflow.com/questions/4890805/…

标签: delphi button toolbar


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢大卫。你给了我一些要调查的东西,一旦我尝试了一切,我会再次发表评论。我的 Delphi 2009 文件中确实有一个清单,我添加了该清单以获得 Windows 认证。如果 Delphi XE8 自己添加一个,那么我可能有两个,这很糟糕。另外,这个问题可能是相关的:stackoverflow.com/questions/30855988/…
  • 拥有清单是一回事。清单事项的内容。显然,一个应用程序是主题,而另一个不是。从图片中可以看出。
  • 到目前为止,我还没有注意到样式上的任何其他差异。只有 TToolButtons 看起来不同,并且只有当它们的 Down 属性为 true 时。我会调查清单,但这里还是有问题。
  • 虽然蓝色高亮显示是平台原生样式,但您确实明白,并且在所有条件相同的情况下,这就是您应该瞄准的外观。
  • 其实,我没有。我认为这是由我的代码或 Delphi VCL 引起的。我以前从未在 Windows 8.1 中注意到这种样式。当我回到家时,我会检查我的其他程序是否显示了这种样式,然后我会设置一个新程序进行测试。但是你说的很有道理,因为新 TToolbar 上的新 TToolButton 具有蓝色背景。但是,我的 Delphi 2009 编译程序不会也改变它的样式吗?它没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
相关资源
最近更新 更多