FYI this is what I ended up with :
procedure sizeColumnToContent(col: integer); // size column and fix to prevent resizing
var
i, mWidth,tmp: integer;
begin
mWidth := 0;
for i := 0 to (myForm.mFields.RowCount -1) do
begin
tmp := myForm.canvas.TextWidth(myForm.mFields.Cells[col,i]); //factor this
if tmp > mWidth then mWidth := tmp;
end;
mWidth := mWidth+padding; // padding defined in dat
with (myForm.mFields) do
begin
Columns.Items[col].maxSize := mWidth;
Columns.Items[col].minsize := mWidth;
Columns.Items[col].width := mWidth;
Columns.Items[col].sizePriority := 0; //factor this
end;
end ;