delphi - Firemonkey TButton 样式,具有两个不同的文本

标签 delphi button firemonkey firemonkey-style

我正在尝试创建一个虚拟键盘,其中每个按钮都有一个数字和几个字母。例如,数字 2 旁边还会有文本 ABC(字体较小),数字 3 旁边会有 3 DEF 就在它旁边。

我可以成功地一一编辑这些按钮的自定义样式。通过一个按钮,我可以放置一个 TText 样式元素,更改每个元素的对齐方式和文本设置,并且效果很好......

Designing button style

但是,我必须一一进行,自定义每个按钮本身的样式。如果我尝试重新使用这种样式,则所有键上的额外字母 ABC 将相同。但我需要它们各不相同。

Sample of keypad in runtime

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

最佳答案

您可以采取解决方法,将 ABC Label 的文本 StyleName 设置为 text,将 Number Label 的 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;

现在设置所有按钮的样式。文本属性将设置文本字母数字文本,标签将设置数字。它仅在运行时起作用。

关于delphi - Firemonkey TButton 样式,具有两个不同的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43616412/

相关文章:

multithreading - CoInitialize 在 Delphi DataSnap 服务器应用程序中

c# - 多个按钮调用相同的功能,可以找出哪个按钮调用了该功能吗?

android - 如何在 Delphi Firemonkey 中使用 toast?

forms - 通过单击 MS Access 2007 中的打开表单按钮显示特定记录不起作用

android - 如何在 ListView MultiDetailRightButtonItem Delphi 中启用或禁用按钮

delphi - 我可以更改 TListBox 所选项目的颜色吗?

oracle - 将 Delphi/Oracle 应用程序从 2 层更改为 3 层

image - 如何获取剪贴板中图像的尺寸?

delphi - 关于工作不正常的 Intraweb 问题(单选按钮)?

CSS Sprites,定位不起作用。