Estoy construyendo este ejemplo a ratos, por lo que calculo que se puede optimizar e incluso encontrar otro método más eficiente, pero como punto de partida esto funciona regularmente.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
MiTabla:String;
nCon:Integer;
nSize:Integer;
begin
MiTabla:='Alumnos.db';
Table1.TableName:=MiTabla;
Table1.Open;
for nCon:=0 to Table1.FieldCount - 1 do
begin
if Table1.Fields[ncon].Size > 1 then
Dbgrid1.Columns[nCon].Width:=Table1.Fields[ncon].Size * 8
else
Dbgrid1.Columns[nCon].Width:=60;
end
end;
Un Saludo.