【问题标题】:Delphi runtime theme enabled, but not usedDelphi 运行时主题已启用,但未使用
【发布时间】:2012-06-21 12:39:24
【问题描述】:

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

如果特别是 TPageControl 和 TTabControl 中的默认颜色不会让我很难判断当前选择了哪个选项卡,那我不会太困扰。

所以我的问题是:

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

注意:

  • 在项目选项中,我为每个现有目标启用了运行时主题。它没有帮助。
  • 我还尝试在包含这些控件的表单中启用 GlassFrame。不幸的是,运行时的外观没有主题化。
  • 此应用程序建立在大量内部和外部代码之上 我不是高手(只是站在巨人肩膀上的一个侏儒), 但我可以使用其来源。怀疑有些 指令会在应用程序启动时禁用主题,我寻找 一些关键字,如“Theme”、“Skin”、“TStyleManager”、“SetWindowTheme” 希望自己解决这个问题。我找不到任何重要的东西(至少对我来说)。
  • 我尝试使用来自 题 Delphi XE2 VCL styles tutorial - how to change the style at runtime, 而且效果很好。
  • 剥皮我的应用程序不是我的目标。我只是希望能够在设计时直观地调整一些 GUI 元素,如果设计和运行时看起来相似,那就更容易了。

【问题讨论】:

    标签: delphi themes delphi-xe2


    【解决方案1】:

    事实证明,删除 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'}”)似乎可以使主题变得正确,并且不会破坏版本信息。

    感谢 Brian 让我朝着正确的方向前进。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 正如我试图在我的问题的第一个注释中表达的那样,我已经检查了每个目标(即“所有配置”、“调试配置”、“发布配置”,每次都是“32 -bit Windows 平台”和“64 位 Windows 平台”)启用了运行时主题。我在阅读您的答案后再次检查以确定,但这对我的情况绝对没有帮助。
      • 好的.. 你也可以尝试为你的发布项目打开版本信息——这可能会显示一些东西。输入非默认版本号,并使用资源管理器文件属性“详细信息”选项卡确认它是否出现。
      • 我应该特别寻找什么?我问这个是因为我使用 RC 文件来获取版本信息(myApp.dpr 中的“{$R 'myApp_rc.res' 'myApp_rc.rc'}”行,就在“program myApp;”之后),并且大多数我在 RC 中填写的字段出现在资源管理器的文件属性中。我是否应该尝试使用“自动 IDE 版本信息”,只是为了看看?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      相关资源
      最近更新 更多