具有两种不同文本的 Firemonkey TButton 样式
Firemonkey TButton style with two different texts
我正在尝试创建一个虚拟键盘,其中每个按钮都有一个数字和几个字母。例如,数字 2
旁边还有文本 ABC
,字体较小,数字 3
旁边还有 DEF
。
我可以成功地把这些按钮的自定义样式一一编辑出来。一个按钮,我可以放下一个 TText
样式元素,更改每个元素的对齐方式和文本设置,效果很好...
但是,我必须一个一个地做,自己定制每个按钮的样式。如果我尝试重新使用这种风格,额外的字母 ABC
将在所有键上相同。但我需要它们各不相同。
如何制作一个可重复使用的样式,同时允许我在每个按钮中使用不同的子文本?还是我必须为每个按钮创建一个独特的样式?
您可以做一个解决方法,将 ABC 标签的文本 StyleName
设置为文本,并将数字标签的样式名称设置为数字。
创建一个覆盖按钮 class 的 class。
TButton = class(FMX.StdCtrls.TButton)
protected
procedure ApplyStyle; override;
end;
procedure TButton.ApplyStyle;
var NumberLabel : TLabel;
begin
//That method will find for a label with stylename number and set the tag of component in it.
inherited;
if FindStyleResource<TLabel>('Number', NumberLabel) then
NumberLabel.Text := IntToStr(Tag);
end;
现在设置所有按钮的样式。文本 属性 将设置文本字母数字文本,标签将设置数字。它仅在运行时有效。
我正在尝试创建一个虚拟键盘,其中每个按钮都有一个数字和几个字母。例如,数字 2
旁边还有文本 ABC
,字体较小,数字 3
旁边还有 DEF
。
我可以成功地把这些按钮的自定义样式一一编辑出来。一个按钮,我可以放下一个 TText
样式元素,更改每个元素的对齐方式和文本设置,效果很好...
但是,我必须一个一个地做,自己定制每个按钮的样式。如果我尝试重新使用这种风格,额外的字母 ABC
将在所有键上相同。但我需要它们各不相同。
如何制作一个可重复使用的样式,同时允许我在每个按钮中使用不同的子文本?还是我必须为每个按钮创建一个独特的样式?
您可以做一个解决方法,将 ABC 标签的文本 StyleName
设置为文本,并将数字标签的样式名称设置为数字。
创建一个覆盖按钮 class 的 class。
TButton = class(FMX.StdCtrls.TButton)
protected
procedure ApplyStyle; override;
end;
procedure TButton.ApplyStyle;
var NumberLabel : TLabel;
begin
//That method will find for a label with stylename number and set the tag of component in it.
inherited;
if FindStyleResource<TLabel>('Number', NumberLabel) then
NumberLabel.Text := IntToStr(Tag);
end;
现在设置所有按钮的样式。文本 属性 将设置文本字母数字文本,标签将设置数字。它仅在运行时有效。