其他分享
首页 > 其他分享> > FMX StringGrid根据内容自适应列宽

FMX StringGrid根据内容自适应列宽

作者:互联网


FMX StringGrid根据内容自适应列宽

 1 // maxrow,默认只排序前面100行以内的数据
 2   // maxwidth,默认单字段显示的最大宽度
 3   function GetColMaxDataLength(ASGrid: TStringGrid;maxrow:Integer=100;maxwidth:Integer=400): TObject;
 4   var
 5     MaxColLength,                  //列数据的最大长度
 6     CellLength: Single;            //单元格长度
 7     ACol,ARow: Integer;
 8     L_maxrow:integer;
 9   begin
10     with ASGrid do
11     begin
12       L_maxrow:=Min(maxrow,ColumnCount);
13       for ACol := 0 to ColumnCount - 1 do
14       begin
15         MaxColLength:=Canvas.TextWidth(Columns[ACol].Header);//取列头宽度
16         for ARow := 0 to L_maxrow - 1 do //为了效率,最大行数默认为100
17         begin
18           CellLength := Canvas.TextWidth(Cells[ACol,ARow]);//取单元格宽度
19           if CellLength > MaxColLength then
20             MaxColLength := CellLength;
21         end;
22         Columns[ACol].Width := min(maxwidth,MaxColLength + 20);  //加上一个值调整列宽
23       end;
24     end;
25   end;

 



应用很简单,一句搞定: 
GetColMaxDataLength(StringGrid1);

标签:begin,end,ACol,FMX,MaxColLength,StringGrid,maxrow,列宽,CellLength
来源: https://www.cnblogs.com/dqi1999/p/13913366.html