我有一个旧版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中,应调用StyleServicesVcl.Themes方法。名称的更改(从ThemeServices更改为StyleServices)是为了反映以下事实:较早的XP主题支持现在已由VCL样式增强。

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

10-07 14:05