标签:ListView1 begin end FireMonkey Objects DetailObject AItem ListView 行高
说明:展示 ListView 视其每一行 Item 的 Detail 字串长度自动调整高度(可每行高度不同)。
适用:Delphi XE7 / XE8
源码下载:[原创]ListView_自动计算行高(by龟山阿卍).zip
procedure TForm1.Button1Click(Sender: TObject); const DetailStr: array[0..2] of String = ('1234567890123456789012345678901234567890123456789012345678901234567890' ,'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz' ,'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ' ); var i, r: Integer; Item1: TListViewItem; begin for i:=0 to 100 do begin Item1 := ListView1.Items.Add; r := Random(3); Item1.Detail := DetailStr[r].Substring(0, Random(DetailStr[r].Length)); Item1.Text := i.ToString; end; end; procedure TForm1.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); var R: TRectF; begin if (AItem.Objects.DetailObject <> nil) and (AItem.Objects.DetailObject.Text <> '') then begin // 计算文字显示的区域 R := RectF(0, 0, AItem.Objects.DetailObject.Width, 10000); ListView1.Canvas.MeasureText(R, AItem.Objects.DetailObject.Text, AItem.Objects.DetailObject.WordWrap, [], TTextAlign.Leading, TTextAlign.Leading); // 设定高度 AItem.Height := Trunc(R.Height); end; end;
补充:计算最后一项区域并卷到最后一项
procedure TForm1.Button2Click(Sender: TObject); var R: TRectF; begin R := ListView1.GetItemRect(ListView1.Items.Count - 1); // 取得最后一项的真实区域 (不等高也能计算) ListView1.ScrollViewPos := R.Bottom; // 卷到最后 end;
原文在这里:https://www.cnblogs.com/onechen/p/4353544.html
标签:ListView1,begin,end,FireMonkey,Objects,DetailObject,AItem,ListView,行高 来源: https://www.cnblogs.com/kinglandsoft/p/11088520.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。