Mega Code Archive

 
Categories / Delphi / Graphic
 

Resize the columns of a TStringGrid TDrawGrid to fit the text

Title: resize the columns of a TStringGrid / TDrawGrid to fit the text? { This will resize the columns of a TStringGrid / TDrawGrid (text only!) so the text is completely visble. To save some time, it uses the first 10 rows only, but that should be easy to fix, if you need more. } // we need this to access protected methods type TGridHack = class(TCustomGrid); procedure ResizeStringGrid(_Grid: TCustomGrid); var Col, Row: integer; Grid: TGridHack; MaxWidth: integer; ColWidth: integer; ColText: string; MaxRow: integer; ColWidths: array of integer; begin Grid := TGridHack(_Grid); SetLength(ColWidths, Grid.ColCount); MaxRow := 10; if MaxRow Grid.RowCount then MaxRow := Grid.RowCount; for Col := 0 to Grid.ColCount - 1 do begin MaxWidth := 0; for Row := 0 to MaxRow - 1 do begin ColText := Grid.GetEditText(Col, Row); ColWidth := Grid.Canvas.TextWidth(ColText); if ColWidth MaxWidth then MaxWidth := ColWidth; end; if goVertLine in Grid.Options then Inc(MaxWidth, Grid.GridLineWidth); ColWidths[Col] := MaxWidth + 4; Grid.ColWidths[Col] := ColWidths[Col]; end; end;