我试图制作一个矩形来显示一些信息。在这个矩形内部我有很多标签,在这个标签中我想以粗体显示一些文本。例如:'姓名:' < - 大胆,此后不大胆。
如果无法做到这一点,我怎么知道label.text的像素大小?如果我有这个信息,我可以创建两个标签并将第二个的位置设置为:label2.position.X := label1.textWidth;
谢谢!
答案 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。对于涉及控制的问题,使用中的框架可能是一个重要因素,应该提及以避免引出可能不相关的答案。