delphi – 计算TLabel所需的大小

前端之家收集整理的这篇文章主要介绍了delphi – 计算TLabel所需的大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,这是问题。我在面板中有一个标签组件。标签对齐为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文档中找到有关其效果的详细信息

原文链接:https://www.f2er.com/delphi/103250.html

猜你在找的Delphi相关文章