NACHTRAG:
Um wieder auf das eigentliche Problem zurück zu kommen: GetMaxColumnWidth arbeitet ja intern mit Canvas.TextWidth. Wenn man da jetzt dummerweise nicht den String sondern eine getypcastete Referenz auf den String rein wirft, erhält man recht gern den Effekt, dass TextWidth immer identische Werte ausspuckt. Würde also theoretisch das Problem erklären.
Ja aber warum nur bei der ersten Spalte und nicht bei allen, das finde ich ja das total merkwürdige an der Sache.
Jetzt habe mich mal für Spaß die Option
vstTable.Header.MainColumn
auf 1 gesetzt und siehe da es funktioniert, die erste und auch die zweite Spalte werden angepasst. So bald aber MainColumn wieder auf 0 oder -1 steht klappt es nicht.