3

我正在尝试创建一个虚拟键盘,其中每个按钮都有一个数字和几个字母。例如,数字旁边2也会有文本,字体较小,数字旁边也会有。ABC3DEF

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

设计按钮样式

但是,我要一个一个来做,自己自定义每个按钮的样式。如果我尝试重新使用这种样式,ABC所有键上的额外字母将是相同的。但我需要他们每个人都不同。

运行时小键盘示例

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

4

1 回答 1

7

您可以做一个解决方法,将StyleNameABC 标签的文本设置为文本,将数字标签的样式名称设置为数字。

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

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 属性将设置文本字母数字文本,标签将设置数字。它只会在运行时工作。

于 2017-04-25T18:05:02.580 回答