古代Delphi VCL应用程序看起来没有Windows主题或VCL样式

时间:2015-06-15 22:25:41

标签: delphi themes manifest vcl-styles

无论如何,这是我的分析。我"分发"今天早上我的应用程序到我们的组织只是为了了解到,在这个旧的win32应用程序上使用Windows 7" Basic"主题见a very faded appearance。但是我们这些使用远程桌面或使用Basic主题的人会看到about what I think we've always seen

事实:

  • 使用XE8,Win32,当前的Raize组件制作
  • 沿途删除了XPMan
  • "启用主题" " on"在所有配置中,Metropolis选中,Windows被设置为Appearance中的默认主题。
  • 最近一款带有Raize组件的小应用程序看起来不错,而且我已经尝试按照此应用程序规定的模式进行操作。
  • 真相:

    1. 自Delphi 1以来,我一直带着这个应用程序;我可能已经重建了Delphi 2周围的项目源,但除此之外,我还没有对dproj文件进行过多的混乱。
    2. 我怀疑我必须专注于资源编译位。我知道的唯一资源是图标和清单,我猜这里的清单是真正的问题。我删除了" XPMan"大约一个月前,但直到今天早上才开始部署。

dpr看起来像这样:

1 24 "win7.manifest"

因为我怀疑它很重要,win7.rc是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity type="win32" name="App" version="3.1.0.0" processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!--The ID below indicates application support for Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
        <!--The ID below indicates application support for Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    </application>
  </compatibility>
</assembly>

反过来又是:

curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" -u "<client_id>:<client_secret>" http://127.0.0.1:8000/o/token/

3 个答案:

答案 0 :(得分:2)

从您的应用中禁用/删除与Metropolis相关的所有内容。 Metropolis仅适用于Windows 8+ Metro风格应用程序,其中遗留应用程序没有任何业务合作(除非您希望将UI转换为Metropolis,这实际上是重写)。

好像使用Metropolis UI已经覆盖了你的颜色,并且正在使用它在Metro风格应用程序中使用的颜色。

另一个选择(清理时)是从头开始没有.dproj文件(以防万一)。它会自动检测应用程序的类型并将其升级到默认设置。你当然还必须在设置中重做很多事情,但这是摆脱任何旧引用并清除这些问题的好方法(假设你已经删除了所有其他的Metropolis引用)。

答案 1 :(得分:2)

由于您要包含自己的清单,因此应禁用“启用运行时主题”,否则exe中将包含重复的清单,但只能有一个清单。

您应该使用“使用自定义清单选项”,删除{$R 'win7.rc'}并让Delphi为您编译。这也将使您更容易根据需要更改清单。

答案 2 :(得分:0)

这里的所有建议都有价值 - 它们简化了。但最终问题是Aero Glass。 &#34; SheetOfGlass&#34;已经在应用程序的根表单中启用了。

旁注

  • 远程桌面无法替代看到应用程序的真实外观。

  • &#34;主题&#34;的价值值得商榷。我的观点是应用程序应该或多或少地符合平台规范。我沿着主题道路前进,因为这让我们很容易&#34;支持文本输入中的文本提示。