Firemonkey TButton风格有两种不同的文本

时间:2017-04-25 16:38:44

标签: delphi button firemonkey firemonkey-style

我正在尝试创建一个虚拟键盘,其中每个按钮都有一个数字和几个字母。例如,数字2旁边的文字ABC也会以较小的字体大小显示,而3旁边的数字DEF旁边会有TText。< / p>

我可以逐个成功编辑这些按钮的自定义样式。一个按钮,我可以删除一个ABC样式元素,更改每个元素的对齐方式和文本设置,它工作正常......

Designing button style

但是,我必须逐个完成,自定义每个按钮的样式。如果我尝试重复使用此样式,则所有键上的额外字母<img src="image.png" (load)="dosomething($event)" /> 将相同。但我需要他们各自不同。

Sample of keypad in runtime

如何制作一个可重复使用的样式,这也可以让我在每个按钮中使用不同的子文本?或者我是否必须为每个按钮创建一个独特的样式?

1 个答案:

答案 0 :(得分:6)

您可以执行一种解决方法,将ABC Label的文本StyleName设置为文本,将数字标签的StyleName设置为Number。

创建一个覆盖按钮类的类。

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;

现在设置所有按钮的样式。 Text属性将设置文本字母数字文本,标签将设置Number。它只能在运行时工作。