我有一个为火猴(fmx)创建的自定义Delphi组件。现在,我需要将我的自定义样式应用于组件。样式保存在资源中。以前,这是通过调用TStyleManager.LoadFromResource
在GetStyleObject
方法中完成的。
这个方法(LoadFromResource
)在西雅图的Delphi10中已经不存在了。
我的XE7代码是通过LoadFromResource
运行的
function TFMXPic.GetStyleObject: TFmxObject;
var
style : string;
begin
if (StyleLookup = '') then
begin
style := GetClassStyleName;
Result := TControl(TStyleManager.LoadFromResource(HInstance,
style, RT_RCDATA));
Exit;
end;
Result := inherited GetStyleObject;
end;
如何在西雅图Delphi 10中实现这一点?
发布于 2016-04-08 22:30:11
首先,我不认为检查StyleLookup是正确的。此属性告诉组件在样式簿中查找此特定样式名称。
然后,尝试在组件级别加载样式文件。FMX的工作方式是这样的。您有一个样式簿,它加载样式文件,然后表单中的每个组件都使用该样式簿来定位由stylelookup值定义的样式名称。
在我的脑海中,这个行动过程应该能做好这项工作:
的StyleLookup='mycomponent‘属性来访问该样式
希望这能有所帮助。
发布于 2016-04-11 18:49:53
我找到了一个解决方案。感谢TMS软件公司的各位。应该使用TStyleStreaming类而不是TStyleManager类。我修改了我的代码,如下所示(现在一切正常)
function TMyComponent.GetStyleObject: TFmxObject;
var
style : string;
begin
if (StyleLookup = '') then
begin
style := GetClassStyleName;
Result := TControl(TStyleStreaming.LoadFromResource(HInstance,
style, RT_RCDATA));
Exit;
end;
Result := inherited GetStyleObject;
end;
https://stackoverflow.com/questions/36498119
复制相似问题