Po načteni dat do tabulka ve FormShow volam proceduru AutoSizeCol.
procedure TForm1.FormShow(Sender: TObject);
Begin
NactiSeznam(StringGrid1, 'data.ini');
StringGrid1.ColWidths[0] := 25;
AutoSizeCol(StringGrid1, 1);
AutoSizeCol(StringGrid1, 2);
AutoSizeCol(StringGrid1, 3);
AutoSizeCol(StringGrid1, 4);
AutoSizeCol(StringGrid1, 5);
AutoSizeCol(StringGrid1, 6);
AutoSizeCol(StringGrid1, 7);
Pak jsem spočital šiřky sloupcu.
Když se však zobrazi Scrollbar je šiřka jina než bez něj.
sirkasloupcu:= StringGrid1.ColWidths[0]
+ StringGrid1.ColWidths[1]
+ StringGrid1.ColWidths[2]
+ StringGrid1.ColWidths[3]
+ StringGrid1.ColWidths[4]
+ StringGrid1.ColWidths[5]
+ StringGrid1.ColWidths[6]
+ StringGrid1.ColWidths[7];
procedure TForm1.AutoSizeCol(Grid: TStringGrid; Column: integer);
var
i, W, WMax: integer;
begin
WMax := 0;
for i := 0 to (Grid.RowCount - 1) do begin
W := Grid.Canvas.TextWidth(Grid.Cells[Column, i]);
if W > WMax then
WMax := W;
end;
Grid.ColWidths[Column] := WMax + 15; {šiřka sloupce}
end;