Hat jemand sowas schon programmiert ?
Jo. Zumindest so in der Richtung :
Delphi-Quellcode:
procedure Tfrm.ErmittleGridBreite;
var i : integer;
begin
PanelBreite := 0;
for i := 0 to sg.ColCount - 1 do
PanelBreite := PanelBreite + sg.ColWidths [i] + 1;
PanelBreite := PanelBreite + GetSystemMetrics (SM_CYVSCROLL) + 10;
end; // ^ Reserve für Scrollbalken
Bei mir liegt das Grid auf einem Panel. Im Prinzip aber wohl egal.
Stop !
Die Form muss ja auch noch angepasst werden. Sonst hat das Grid eventuell keine Scrollbalken, dafür aber die Form (im FormShow) :
width := PanelBreite + 4; // wegen Panel-Rand
Im Klartext sieht das dann so aus : anhand der nötigen Grid-Breite, die Panelbreiite ermitteln. Anhand des ermittelten Wertes wird dann die Breite der Form an die Panelbreite angepasst. Lästig sind allerdings noch die Ränder, die überall auftauchen. Deshalb das +4, +10 usw.