FDMemTable にリンクされた文字列グリッドがあり、(クラス ヘルパーに追加した) AutoSize プロシージャを初めて実行すると、すべてが完璧です。
その後、FDMemTable を再度開いてみると、ヘッダーはデフォルトのサイズに戻りますが、他の行は同じままです。
私の手順は次のとおりです。
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) を使用しています。