在与DBGrid1关联的数据集的AfterOpen事件中写如下代码:var jsq,maxWidth:integer; begin DBGrid1.DataSource.Dataset.DisableControls; for jsq:=0 to DBGrid1.Columns.Count-1 do begin DBGrid1.DataSource.Dataset.First; maxWidth:=DBGrid1.Canvas.TextWidth(DBGrid1.Columns[jsq].Title.Caption)+10; while not DBGrid1.DataSource.Dataset.Eof do begin if maxWidth<DBGrid1.Canvas.TextWidth(DBGrid1.DataSource.Dataset.Fields.Fields[jsq].AsString) then maxWidth:=DBGrid1.Canvas.TextWidth(DBGrid1.DataSource.Dataset.Fields.Fields[jsq].AsString); DBGrid1.DataSource.Dataset.Next; end; DBGrid1.Columns[jsq].Width:=maxWidth; end; DBGrid1.DataSource.Dataset.EnableControls; end;
jsq,maxWidth:integer;
begin
DBGrid1.DataSource.Dataset.DisableControls;
for jsq:=0 to DBGrid1.Columns.Count-1 do
begin
DBGrid1.DataSource.Dataset.First;
maxWidth:=DBGrid1.Canvas.TextWidth(DBGrid1.Columns[jsq].Title.Caption)+10;
while not DBGrid1.DataSource.Dataset.Eof do
begin
if maxWidth<DBGrid1.Canvas.TextWidth(DBGrid1.DataSource.Dataset.Fields.Fields[jsq].AsString) then
maxWidth:=DBGrid1.Canvas.TextWidth(DBGrid1.DataSource.Dataset.Fields.Fields[jsq].AsString);
DBGrid1.DataSource.Dataset.Next;
end;
DBGrid1.Columns[jsq].Width:=maxWidth;
end;
DBGrid1.DataSource.Dataset.EnableControls;
end;
我试过了。