我有一个链接到 FDMemTable 的字符串网格,当我第一次运行 AutoSize 过程(我添加到它的类助手中)时,一切都很完美。
之后,当我尝试重新打开 FDMemTable 时,我的 Header 会恢复到默认大小,但其他行保持不变。
我的程序如下:
procedure TStringGridHelper.AutoSizeCols;
var
i, W, WMax: integer;
Column : Integer;
begin
for Column := 0 to Self.ColumnCount-1 do
begin
if Self.ColumnByIndex(Column).Width > 0 then
begin
WMax := Round(Canvas.TextWidth(Self.ColumnByIndex(Column).Header));
for i := 0 to (Self.RowCount - 1) do begin
W := Round(Canvas.TextWidth(Self.Cells[Column, i]));
if W > WMax then
WMax := W;
if WMax > SizeMax then
begin
WMax := SizeMax;
Break;
end;
end;
Self.ColumnByIndex(Column).Width := WMax + 10;
end;
end;
end;
如果我手动调整列的大小,它会恢复正常。
我正在使用 XE7 及其多设备应用程序 (FireMonkey)