Sondern ich werde die Breiten weiterhin manuell setzen.
Das hatte ich auch gar nicht in Frage gestellt. Ich würde dann aber die Spaltenbreite auf
DefaultWidth setzen, da diese das
TField.DisplayWidth zur Berechnung heranzieht.
Delphi-Quellcode:
for I := 0 to DBGrid1.Columns.Count - 1 do
DBGrid1.Columns[I].Width := DBGrid1.Columns[I].DefaultWidth;
Ich halte nicht viel davon, die tatsächlichen Feldwerte der gesamten Tabelle auf ihre aktuelle Länge zu prüfen und davon das Maximum zu nehmen. Das könnte zu unterschiedlichem Aussehen je nach Datenlage führen.
Wenn der Feldinhalt dynamisch ist, dann bestimme einfach einen sinnvollen Wert für
DisplayWidth des entsprechenden Feldes. Im Gegensatz zu der Spaltenbreite wird
DisplayWidth als Anzahl Zeichen angegeben. Das macht die Sache deutlich einfacher.