delphi如何在运行时更改firemonkey用户样式的文本子属性

时间:2017-05-14 23:28:29

标签: delphi firemonkey delphi-10.1-berlin

我创建了一个这样的风格:

enter image description here

然后我创建一个名为TLieu的TLayout继承组件

我的目标是在运行时实例化并更改:Image属性,Title.Text属性,Informations.Text属性,Map,Infos,Link按钮

我的代码,但它不起作用:

Procedure TF_Main.Button1Click(Sender: TObject);
var
  Lieu: TLieu;
begin
  Lieu := TLieu.Create(VSB_Place);
  Lieu.Name := 'Test';
  Lieu.StyleName := 'Lieu';
  Lieu.StylesData['Title.Text'] := 'My Title';
  // TLayout(Lieu).StylesData['Title.Text'] := 'My Title';  // this doesn't work either
end;

如何在运行时更改自定义用户样式组件的子属性?

2 个答案:

答案 0 :(得分:2)

  1. TLieu必须继承自TStyledControl
  2. 使用Lieu.StyleLookup而不是Lieu.StyleName
  3. 在更改StyleData之前调用ApplyStyleLookup

答案 1 :(得分:1)

以下是我如何使用ListBox项目

的示例
vItem.NeedStyleLookup;
vItem.ApplyStyleLookup; // without this, FindStyleResource will return nil

vSwitch := vItem.FindStyleResource('switch') as TSwitch;
Assert(vSwitch <> nil);
vSwitch.IsChecked := vCampaign.Enable;
vSwitch.OnClick := DoOnClickSwitch;

在我的情况下,“描述”和“细节”是TText。您可以在StyleName属性中更改名称(在样式中)。

要简单地通过在我的示例中为ListBox项目(vItem.ImageIndex)指定图像索引来更改图像,样式中的TGlyph图像应该具有名称“glyphstyle”。

//如何以样式访问组件:

{{1}}