如何使用自动换行在listview中为变量多行长文本自动调整项目高度? (德尔福Firemonkey平台)
例如
和我的listview
通过listview / itemappearance / item / text使用(自动换行/ true)和(修剪/无)选项进行自动换行,但自动调整行高或拟合高度是不行的。
答案 0 :(得分:0)
我使用Delphi 10.3,并创建了自己的ListItems。 当我使用WardWrap创建ListViewText时,在ListView1UpdatingObjects上:= True并用文本填充它,然后执行此操作
function GetTextHeight(const D: TListItemText; const Width: single; const
Text: string): Integer;
var
Layout: TTextLayout;
begin
Layout := TTextLayoutManager.DefaultTextLayout.Create;
try
Layout.BeginUpdate;
try
Layout.Font.Assign(D.Font);
Layout.VerticalAlign := D.TextVertAlign;
Layout.HorizontalAlign := D.TextAlign;
Layout.WordWrap := D.WordWrap;
Layout.Trimming := D.Trimming;
Layout.MaxSize := TPointF.Create(Width,
TTextLayout.MaxLayoutSize.Y);
Layout.Text := Text;
finally
Layout.EndUpdate;
end;
Result := Round(Layout.Height);
Layout.Text := 'm';
Result := Result + Round(Layout.Height);
finally
Layout.Free;
end;
end;
并这样称呼
LText.Height := GetTextHeight(LText, LText.Width, LText.Text);