古老德尔福VCL应用程序看起来有没有Windows主题或风格VCL(Ancient Delphi V

2019-10-23 10:05发布

这是我的分析,无论如何。 我“分布式”我的应用程序,以我们的组织今天上午才得知,一个月的对这个老的Win32应用程序在XE8新的工作后,客户使用Windows 7的“基本”的主题看到一个非常褪色的外观 。 但是,我们这些使用远程桌面或使用基本主题看什么,我想我们一直看到的 。

事实:

  • 由具有XE8,Win32中,当前Raize组件
  • XPMan沿途移除
  • “启用的主题”为“开”,在所有的configs,新都检查,将Windows设置为外观的默认主题。
  • 最近的一个小的应用程序有一些Raize组件看起来不错,和我试着按照这个程序规定的图案。
  • 真相:

    1. 我一直带在身边这个程序,因为德尔福1; 我可能已经重建项目源周围德尔福2但除此之外,我还没有与dproj文件搞砸了。
    2. 我怀疑我将不得不把重点放在资源编译位。 我所知道的唯一资源是图标和舱单,和我猜的清单是真正的问题在这里。 我删除“XPMan”大约一个月前,但没有部署直到今天早上。

朝鲜民主主义人民共和国看起来是这样的:

program db_silookup;
uses
  Vcl.Forms,
  Vcl.Themes,
  Vcl.Styles,
  //...
  {$R *.res}
  {$R 'win7.rc'}
begin
  Application.Initialize;
  Application.UseMetropolisUI;
  Application.CreateForm(TfmSi, fmSi);
  Application.CreateForm(TfmXferList, fmXferList);
  TStyleManager.TrySetStyle('Windows');
  Application.Title:='Law School Lookup';
  Application.Run;
end.

而且因为我怀疑它的事项,win7.rc是:

1 24 "win7.manifest"

这又是:

<?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>

Answer 1:

既然你包括你自己的表现,你应该禁用“启用运行的主题”否则你就必须包含在exe文件一式两份清单,但只能有一个。

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



Answer 2:

禁用/删除从您的应用程序与大都市的一切。 楚天只是针对的Windows 8+ Metro风格的应用程序,它继承应用程序没有业务工作(除非你希望你的UI楚天这实际上是一个重新写转换)。

它好像都市报UI的使用已覆盖你的颜色,并使用它,否则将使用Metro风格应用程序的颜色。

另一种选择(而清理),将从头开始没有.dproj文件(备份,以防万一)。 它会自动检测应用程序的类型和升级为默认设置。 你仍然会当然有设置重新做很多事情,但它是摆脱任何旧的引用,并清理这些排序的问题(因为你已经删除了所有其他都市报引用)的好方法。



Answer 3:

有一个在所有建议值,在这里 - 他们简化。 最后,虽然,这个问题是Aero玻璃。 “SheetOfGlass”才行了在应用程序的根形式启用。

旁注

  • 远程桌面是看到的应用程序确实看起来像没有替代品。

  • 的“主题”的价值是值得商榷的。 我的看法是,一个应用程序应当符合或多或少平台的规范。 我去了主题路径,因为得到在文本输入文本提示我们“轻松”的支持。



文章来源: Ancient Delphi VCL app looks to have no Windows theme or VCL Style