delphi 如何在运行时更改 firemonkey 用户样式文本子属性
delphi How to change at runtime a firemonkey user style text sub-property
我创建了这样的样式:
然后我创建一个TLayout继承组件,命名为TLieu
我的目标是在运行时实例化它并更改: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;
如何在运行时更改自定义用户样式组件的子属性?
- TLieu 必须继承自 TStyledControl
- 使用Lieu.StyleLookup代替Lieu.StyleName
- 在更改 StyleData 之前调用 ApplyStyleLookup
这是我如何使用 ListBox Item 的示例
vItem.StylesData['descript'] := 'Description';
vItem.StylesData['details'] := 'Details text';
vItem.ImageIndex := 3;
在我的例子中,"descript" 和 "details" 是文本。您可以在 StyleName 属性(样式)中更改名称。
在我的示例中,要通过为列表框项 (vItem.ImageIndex) 指定图像索引来简单地更改图像,样式中的 TGlyph 图像应具有名称 'glyphstyle'.
//如何访问样式中的组件:
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;
我创建了这样的样式:
然后我创建一个TLayout继承组件,命名为TLieu
我的目标是在运行时实例化它并更改: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;
如何在运行时更改自定义用户样式组件的子属性?
- TLieu 必须继承自 TStyledControl
- 使用Lieu.StyleLookup代替Lieu.StyleName
- 在更改 StyleData 之前调用 ApplyStyleLookup
这是我如何使用 ListBox Item 的示例
vItem.StylesData['descript'] := 'Description';
vItem.StylesData['details'] := 'Details text';
vItem.ImageIndex := 3;
在我的例子中,"descript" 和 "details" 是文本。您可以在 StyleName 属性(样式)中更改名称。
在我的示例中,要通过为列表框项 (vItem.ImageIndex) 指定图像索引来简单地更改图像,样式中的 TGlyph 图像应具有名称 'glyphstyle'.
//如何访问样式中的组件:
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;