for i:=0 to sGrid.Columns.Count-1 do
begin
MaxWidth:=length(sGrid.Columns.Items[i].Title.Caption)*6;
DataSet.First;
while not DataSet.Eof do
begin
if Maxwidth<length(DataSet.fieldByName(sGrid.Columns.Items[i].DisplayName).AsString) * 6 then
Maxwidth:=length(DataSet.fieldByName(sGrid.Columns.Items[i].DisplayName).AsString) * 6;
DataSet.Next;
end;
sGrid.Columns.Items[i].Width:=MaxWidth + 6;
if sGrid.Columns.Items[i].Width>300 then
sGrid.Columns.Items[i].Width:=300;
if sGrid.Columns.Items[i].Width<50 then
sGrid.Columns.Items[i].Width:=50;
end;