如何将标签中的某些字符更改为粗体?

时间:2016-11-29 18:26:41

标签: delphi label firemonkey delphi-10.1-berlin

我试图制作一个矩形来显示一些信息。在这个矩形内部我有很多标签,在这个标签中我想以粗体显示一些文本。例如:'姓名:' < - 大胆,此后不大胆。

如果无法做到这一点,我怎么知道label.text的像素大小?如果我有这个信息,我可以创建两个标签并将第二个的位置设置为:label2.position.X := label1.textWidth;

谢谢!

1 个答案:

答案 0 :(得分:4)

使用标准标签控件,您唯一的选择是使用两个这样的控件,一个Font.Style包含 fsBold ,另一个不是。

放置您的第一个粗体标签,只要您离开/设置AutoSize属性 true Width属性就会告诉您宽度:

// Where:
//
//   - boldLabel is a created, initialised and positioned
//      label with bold text 
//
//   - normalLabel is a created and initialised label which 
//      has not yet been positioned (horizontally)
//
//   - spacingPixels is the distance you wish to maintain
//      between the two

normalLabel.Position.X := boldLabel.Position.X + boldLabel.Width + spacingPixels;

有许多第三方标签控件,其中许多是免费的+开源的(对于VCL [见下文]),它们支持标签中不同程度的标记。 FMX可能有类似的实现。

对于VCL项目,您可能需要查看the JediVCL library,其中包含的标签不仅支持粗体,还支持其他HTML标记。如果您感兴趣,那么您在该库中寻找的控件是TJvHTLabel

<强> NB。对于将来的参考:您没有指定您的项目是FMX还是VCL,但是使用Position属性可能会显示它可能是FMX。对于涉及控制的问题,使用中的框架可能是一个重要因素,应该提及以避免引出可能不相关的答案。