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文档中找到有关其效果的详细信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |