我创建了一个这样的风格:
然后我创建一个名为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;
如何在运行时更改自定义用户样式组件的子属性?
答案 0 :(得分:2)
答案 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}}