Firemonkey Listview 计算文字行高

来源:互联网 发布:知乎成都审核招聘 编辑:程序博客网 时间:2024/06/06 03:47
procedure TForm1.ListView1UpdateObjects(const Sender: TObject;
  const AItem: TListViewItem);
var
  TextR : TRectF;
  DetailR: TRectF;
  TextRHeight: integer;
  DetailRHeight: integer;
begin
     TextRHeight := 0;
     DetailRHeight := 0;
     if (AItem.Objects.TExtObject <> nil) and
        (AItem.Objects.TextObject.Text <> '') then
     begin
          // 计算文字显示的区域
          TextR := RectF(0, 0, AItem.Objects.TextObject.Width, 10000);
          AItem.Parent.Canvas.MeasureText(TextR,
            AItem.Objects.TextObject.Text,
            AItem.Objects.TextObject.WordWrap,
            [], TTextAlign.Leading, TTextAlign.Leading);
          // 设定高度
          TextRHeight := Trunc(TextR.Height);
     end;


     if (AItem.Objects.DetailObject <> nil) and
        (AItem.Objects.DetailObject.Text <> '') then
     begin
          // 计算文字显示的区域
          DetailR := RectF(0, 0, AItem.Objects.DetailObject.Width, 10000);
          AItem.Parent.Canvas.MeasureText(DetailR,
            AItem.Objects.DetailObject.Text,
            AItem.Objects.DetailObject.WordWrap,
            [], TTextAlign.Leading, TTextAlign.Leading);
          // 设定高度
          DetailRHeight := Trunc(DetailR.Height);
     end;


     AItem.Height := TextRHeight + DetailRHeight + 20;
end;
0 0
原创粉丝点击