首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Delphi Seattle将自定义样式应用于自定义火猴组件

如何使用Delphi Seattle将自定义样式应用于自定义火猴组件
EN

Stack Overflow用户
提问于 2016-04-08 19:09:26
回答 2查看 2K关注 0票数 1

我有一个为火猴(fmx)创建的自定义Delphi组件。现在,我需要将我的自定义样式应用于组件。样式保存在资源中。以前,这是通过调用TStyleManager.LoadFromResourceGetStyleObject方法中完成的。

这个方法(LoadFromResource)在西雅图的Delphi10中已经不存在了。

我的XE7代码是通过LoadFromResource运行的

代码语言:javascript
运行
复制
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中实现这一点?

EN

回答 2

Stack Overflow用户

发布于 2016-04-08 22:30:11

首先,我不认为检查StyleLookup是正确的。此属性告诉组件在样式簿中查找此特定样式名称。

然后,尝试在组件级别加载样式文件。FMX的工作方式是这样的。您有一个样式簿,它加载样式文件,然后表单中的每个组件都使用该样式簿来定位由stylelookup值定义的样式名称。

在我的脑海中,这个行动过程应该能做好这项工作:

  1. 按照您已经完成的操作,将样式文件添加到项目的资源中。假设您的组件具有名为"mycomponent“的样式,请在表单的OnCreate中以
  2. 的形式添加一个样式本,将资源文件加载到TResourceStream中,然后使用TStyleBook.LoadFromStream
  3. Now将最后一个加载到样式簿中您可以通过设置组件

的StyleLookup='mycomponent‘属性来访问该样式

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-04-11 18:49:53

我找到了一个解决方案。感谢TMS软件公司的各位。应该使用TStyleStreaming类而不是TStyleManager类。我修改了我的代码,如下所示(现在一切正常)

代码语言:javascript
运行
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36498119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档