我正在尝试制作一个矩形来显示一些信息。在这个矩形内我有很多标签,在这个标签中我想以粗体显示一些文本。例如:“名称:”<- 粗体,此后不粗体。
如果这是不可能的,我如何知道 label.text 的像素大小?如果我有这些信息,我可以创建两个标签并将第二个标签的位置设置为:label2.position.X := label1.textWidth;
谢谢!
最佳答案
使用标准标签控件,您唯一的选择是使用两个这样的控件,一个带有 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 .
注意。供将来引用:您没有指定您的项目是 FMX 还是 VCL,但从使用 Position
属性来看,它很可能是 FMX。对于涉及控制的问题,正在使用的框架可能是一个重要因素,应该提及以避免引出可能不相关的答案。
关于delphi - 如何将标签中的某些字符更改为粗体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40873121/