我应该如何在 Delphi XE8 中获取 ThemeServices 实例

How should I fetch the ThemeServices instance in Delphi XE8

我从遗留的 Delphi 2010 应用程序中获得了此代码。

var InternalServices: TThemeServices;

function ThemeServices: TThemeServices;
begin
    if InternalServices = nil then
        InternalServices := ThemeServicesClass.Create;
    Result := InternalServices;
end;

编译器告诉我 ThemeServicesClass.Create 不存在。我应该如何在 Delphi XE8 中执行此操作?

问题中包含的代码是从 VCL 的 Themes 单元提取的。该代码不应由您编译。您的应用程序编译该代码而不是使用 Themes 单元中的代码可能总是一个错误。

在XE8中你应该调用Vcl.ThemesStyleServices方法。名称更改(从 ThemeServicesStyleServices)是为了反映旧的 XP 主题支持现在已通过 VCL 样式得到增强。

据我所知,你问题中的代码应该不是你编译的。它应该被删除。它可能是一段更大的代码的一部分,可能也执行可疑的行为。如果不完全了解该代码,我们就不可能为您提供明确的建议。