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);

posted @ 2020-11-02 10:56  dqi1999  阅读(367)  评论(0编辑  收藏  举报