Ja, das geht, ungetestet ungefähr sowas:
Delphi-Quellcode:
// Im AfterOpen der Query, Table, ...
procedure TForm1.DatenbankomponentennameAfterOpen(DataSet: TDataSet);
var
lb : TLabel;
i : Integer;
begin
lb := TLabel.Create(Self);
lb.AutoSize := true;
lb.ParentFont := true;
// Wenn das DBGrid 'ne andere Schriftgröße hat, als das Formular:
// lb.ParentFont := false;
// lb.Font := DBGrid1.Font;
// Damit werden die Spaltenbreiten an den Inhalt der ersten Zeile der Datenmenge angepasst.
for i := 0
to DBGrid1.Columns.Count - 1
do begin
lb.Caption := DBGrid1.Columns[i].Field.AsString;
DBGrid1.Columns[i].Width := lb.Width;
end;
lb.Free;
end;
Alternative: Das DBGrid aus der JVCL nehmen, das bringt sowas und viele Vereinfachungen von Hause aus mit.