2016-11-29 5 views
1

일부 정보를 표시하기 위해 Rectangle을 만들려고합니다. 이 사각형 안에 많은 레이블이 있으며,이 레이블에는 굵게 표시된 일부 텍스트를 표시하려고합니다. 예를 들면 다음과 같습니다. 'Name :'< - 굵게 표시하고 굵게 표시하지 않음.내 레이블에서 굵게 문자 만 변경하는 방법은 무엇입니까?

이것이 가능하지 않은 경우 label.text의 픽셀 크기를 어떻게 알 수 있습니까? 이 정보가 있으면 두 개의 라벨을 만들고 두 번째 라벨의 위치를 ​​다음과 같이 설정할 수 있습니다. label2.position.X := label1.textWidth;

고마워요! 표준 라벨을 사용

+0

가장 쉬운 해결책은 별도의 라벨을 사용하는 것입니다. –

+0

이 코드는 런타임에 작성하므로 레이블을 2 개 사용하면 첫 번째 텍스트의 끝 부분을 알아야합니다. 어떻게 알 수 있습니까? –

+3

label1.Canvas.TextWidth (label1.Caption) –

답변

4

는 당신의 유일한 옵션은 fsBold, 다른되지 않은 등의 Font.Style 같은 컨트롤을 사용하는 것입니다 제어 할 수 있습니다.

장소 첫 번째, 굵은 라벨 다음과 같은 당신이 떠나기로 /를 AutoSize 재산 사실를 설정하십시오 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; 

는 제 3 자 레이블 컨트롤을 제공하고 있습니다를 레이블 중 다양한 수준의 마크 업을 지원하는 많은 무료 + 오픈 소스 (VCL의 경우 [아래 참조.]). FMX와 유사한 구현이있을 수 있습니다.

VCL 프로젝트의 경우 the JediVCL library에 굵은 글꼴뿐만 아니라 제한된 HTML 마크 업을 지원하는 레이블이 포함되어 있는지 확인할 수 있습니다. 이것이 관심 대상인 경우 해당 라이브러리에서 찾고있는 컨트롤은 TJvHTLabel입니다.

NB. 나중에 참조 할 경우 : 프로젝트가 FMX인지 VCL인지는 지정하지 않지만 FMX가 될 가능성이있는 Position 속성을 사용하면 나타납니다. 통제와 관련된 문제의 경우 사용중인 프레임 워크가 중요한 요소 일 수 있으며 관련이 없을 수있는 답변을 유도하지 않도록 언급해야합니다.