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;
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;
第一次调整写入ini文件就好。。然后每次读取ini不会浪费资源(如果出现新的数据长度。那么再重复一次操作!)
你的方法还是比较好的,这样可以减少重复操作。可取!!