Mega Code Archive

 
Categories / Delphi / ADO Database
 

How to autosize a dbgrid column to fit its contents

Title: How to autosize a dbgrid-column to fit its contents procedure SetGridColumnWidths(Grid: Tdbgrid); const DEFBORDER = 10; var temp, n: Integer; lmax: array [0..30] of Integer; begin with Grid do begin Canvas.Font := Font; for n := 0 to Columns.Count - 1 do //if columns[n].visible then lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER; grid.DataSource.DataSet.First; while not grid.DataSource.DataSet.EOF do begin for n := 0 to Columns.Count - 1 do begin //if columns[n].visible then begin temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER; if temp lmax[n] then lmax[n] := temp; //end; { if } end; {for} grid.DataSource.DataSet.Next; end; { while } grid.DataSource.DataSet.First; for n := 0 to Columns.Count - 1 do if lmax[n] 0 then Columns[n].Width := lmax[n]; end; { With } end; {SetGridColumnWidths } procedure TForm1.Button1Click(Sender: TObject); begin SetGridColumnWidths(dbgrid3); end;