gpt4 book ai didi

delphi - 计算 TLabel 所需的大小

转载 作者:行者123 更新时间:2023-12-03 14:34:45 26 4
gpt4 key购买 nike

好吧,问题来了。我在面板中有一个标签组件。该标签与 alClient 对齐并启用了自动换行。文本可以从一行到几行不等。我想重新调整面板(和标签)的高度以适合所有文本。

当我知道文本和面板的宽度时,如何获得标签的必要高度?

最佳答案

您可以使用 TCanvas.TextRect 方法以及 tfCalcRect 和 tfWordBreak 标志:

var
lRect : TRect;
lText : string;

begin
lRect.Left := 0;
lRect.Right := myWidth;
lRect.Top := 0;
lRect.Bottom := 0;

lText := myLabel.Caption;

myLabel.Canvas.Font := myLabel.Font;
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 函数的调用。

tfCalcRecttfWordBreak 标志是 Windows API 的值 DT_CALCRECTDT_WORDBREAK 的 Delphi 包装器。您可以在 msdnDrawTextEx 文档中找到有关其效果的详细信息。

关于delphi - 计算 TLabel 所需的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2721397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com