좋아, 여기에 문제가있다. 패널에 라벨 구성 요소가 있습니다. 레이블이 alClient로 정렬되어 있고 단어 랩을 사용할 수 있습니다. 텍스트는 한 줄에서 여러 줄까지 다양합니다. 모든 텍스트에 맞게 패널의 높이와 레이블의 크기를 다시 조정하고 싶습니다.TLabel에 필요한 크기를 계산하십시오
텍스트와 패널 너비를 알 때 레이블의 높이를 어떻게 얻습니까?
좋아, 여기에 문제가있다. 패널에 라벨 구성 요소가 있습니다. 레이블이 alClient로 정렬되어 있고 단어 랩을 사용할 수 있습니다. 텍스트는 한 줄에서 여러 줄까지 다양합니다. 모든 텍스트에 맞게 패널의 높이와 레이블의 크기를 다시 조정하고 싶습니다.TLabel에 필요한 크기를 계산하십시오
텍스트와 패널 너비를 알 때 레이블의 높이를 어떻게 얻습니까?
당신은 tfCalcRect와 tfWordBreak 플래그와 함께 TCanvas.TextRect 방법을 사용할 수 있습니다
var
lRect : TRect;
lText : string;
begin
lRect.Left := 0;
lRect.Right := myWidth;
lRect.Top := 0;
lRect.Bottom := 0;
lText := myLabel.Caption;
myLabel.Canvas.TextRect(
{var} lRect, //will be modified to fit the text dimensions
{var} lText, //not modified, unless you use the "tfModifyingString" flag
[tfCalcRect, tfWordBreak] //flags to say "compute text dimensions with line breaks"
);
ASSERT(lRect.Top = 0); //this shouldn't have moved
myLabel.Height := lRect.Bottom;
end;
TCanvas.TextRect
는 Windows API에서 DrawTextEx
함수에 대한 호출을 래핑합니다.
tfCalcRect
및 tfWordBreak
플래그는 Windows API의 DT_CALCRECT
및 DT_WORDBREAK
값에 대한 델파이 래퍼입니다. 당신은 당신이
label.width에 대한 한 줄의 코드를 사용할 수 있습니다 msdn
alTop을 정렬하고 AutoSize를 유지하면 TLabel은 캡션을 설정 한 후 자동으로 높이를 조정합니다.
TextWidth 및 TextHeight를 사용하십시오.
는 여기에 예를 참조하십시오 http://www.greatis.com/delphicb/tips/lib/fonts-widthheight.html TextWidth 텍스트는 것이 얼마나 넓은 당신을 말할 것이다, 다음은 제어 폭에 의해 당신이 필요로 얼마나 많은 행 볼 것을 나눌 수 있습니다. 나머지 부분은 추가 행이어야합니다.
단어 랩을 사용하고 추가로 1 줄의 여분이 필요하면 이것이 잘못 될 수도 있습니다. –
이것은 멋지므로 확인란이나 라디오 크기를 결정할 수 있습니까? 폰트와 컴포넌트의 크기가 변하는 것을 발견했습니다 ... 상자가 더 크거나 작다는 것을 의미합니다 ... –
에 DrawTextEx
문서에 미치는 영향에 대한 자세한 정보를 확인할 수 있습니다 = label.canvas.textwidth (label.caption);
또는 객체 검사기에서 label autosize 속성을 true로 사용할 수 있습니다.
키를 다시 크기를 조정하려고합니다. –
TextRect 행 앞에 myLabel.Canvas.Font : = myLabel.Font를 추가해야합니다. –