Die Tabelle soll sich nicht hin und her verschieben, wenn man mit der Maus auf eine außen gelegene Spalte klickt. Bilder sagen mehr als Worte, wirf ein Blick drauf und du wirst mich verstehen.
Du machst das Stringgrid genau so groß, wie benötigt und stellst beim Programmstart alle Spaltenbreiten so ein, wie du sie brauchst (geht nicht im Objektinspekter). Du kannst dir entweder ausrechnen, wie breit dein Stringgrid sein muß, oder du probierst eine Weile mit den Spaltenbreiten herum, bis es paßt. Das von dir beschriebene Phänomen kommt daher, daß in der von dir gewählten Stringgrid-Breite nicht alle Spalten vollständig sichbar sind, weshalb auch (normalerweise) der horizontale Scrollbalken erscheint, wenn man den nicht zuvor ausschaltet. Das "Springen", wie du es nennst, kannst du nur vermeiden, wenn beim Programmstart alle Spalten
vollständig sichtbar sind, wobei du den Platz, den die horizontale Scrollbar beansprucht, nicht vergessen darfst. Um den Anwender eine Änderung Spaltenbreiten zu ermöglichen, stellst du in den im Stringgrid das Property Options.ColSizing auf True, andernfalls auf False (Defaultwert). Laß zur Kontrolle beide Scrollbars zu (ScrollBars := ssBoth
. Wenn beim Programmstart, nachdem du alle Spaltenbreiten eingestellt hast, die horizontale Scrollbar verschwunden ist, und sich kein ungenutzter Platz zwischen dem Ende der letzten Spalte und der vertikalen Scrollbar befindet, sind deine Einstellungen abgeschlossen und dein StringGrid ist sozusagen "fixiert".