Delphi运行时主题已启用,但未使用

时间:2012-06-19 13:03:25

标签: delphi themes delphi-xe2

在遗留应用程序(在WinXP中以32位创建Delphi 6,最近在Win7下以64位格式移植到Delphi XE2)中,标准控件看起来“现代”,带有颜色渐变等。 - 虽然,它们看起来就像一个旧的Win95版本。

如果特别是TPageControl和TTabControl中的默认颜色不能确定当前选择哪个选项卡真的很难,那就不会打扰我了。

所以我的问题是:

  1. 什么可以使主题在运行时不活跃?
  2. 是否可以轻松(例如通过IDE配置)使设计时间看起来像运行时间?
  3. 注意:

    • 在项目选项中,我为每个现有目标启用了运行时主题。它没有帮助。
    • 我还尝试在包含这些控件的表单中启用GlassFrame。不幸的是,运行时的外观和感觉保持不变。
    • 此应用程序基于许多内部和外部代码 我不掌握(只是矮人站在巨人的肩膀上), 但我的消息来源可供我使用。怀疑一些 指令会在应用程序启动时禁用主题,我找了 一些关键字,如“主题”,“皮肤”,“TStyleManager”,“SetWindowTheme” 希望自己解决这个问题。我找不到任何重要的东西(对我来说,至少)。
    • 我尝试使用来自的信息对一个小应用程序进行皮肤测试 题 Delphi XE2 VCL styles tutorial - how to change the style at runtime, 它完美无缺。
    • 剥离我的应用程序不是我的目标。我只是想在设计时能够在视觉上调整一些GUI元素,如果设计和运行时间看起来相似则更容易。

2 个答案:

答案 0 :(得分:6)

事实证明,删除dpr文件中的“{$ R * .res}”行会使主题不可用。

在D6下,我在项目中禁用了版本信息,并将“{$ R * .res}”替换为“{$ R'myApp.res''myApp.rc'}”,以使用我自己的rc文件版本信息在一个单独的,易于编辑的文件中,而不是被迫通过项目选项。

在XE2下,由于资源在构建期间经常被Delphi覆盖(或者不被考虑,我不太确定),因此不再起作用。我不得不重命名rc文件,使其与应用程序名称不匹配,从而将“{$ R' myApp .res'' myApp .rc'}”替换为“{$ R' myApp_rc .res'' myApp_rc .rc'}”。

再次使用“{$ R * .res}”(以及“{$ R'myApp.res''myApp.rc'}”)似乎可以使主题正确,而不会破坏版本信息。< / p>

感谢Brian让我看好方向。

答案 1 :(得分:1)

根据我的经验,这通常是由于DEBUG模式(在IDE中默认使用)和RELEASE模式之间的项目差异。打开项目选项并滚动到应用程序(定义主题样式和图标)。请注意,顶部的平台和构建选项组合为每个设置保存单独的值,我希望您会发现您的DEBUG构建配置启用了运行时主题但RELEASE没有。

相关问题