加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 计算TLabel所需的大小

发布时间:2020-12-15 10:13:39 所属栏目:大数据 来源:网络整理
导读:好的,这是问题。我在面板中有一个标签组件。标签对齐为alClient并启用了单词包装。文本可以从一行到几行。我想重新调整面板的高度(和标签)以适应所有文字。 当我知道面板的文字和宽度时,如何获得标签所需的高度? 解决方法 您可以使用TCanvas.TextRect方法
好的,这是问题。我在面板中有一个标签组件。标签对齐为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.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的delphi包装器。您可以在msdn的DrawTextEx文档中找到有关其效果的详细信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读