procedure SetColumnWidths(Grid: TDBGrid);
const
DEFBORDER = 10;
var
iTemp, k: Integer;
arrMax: array [0..30] of Integer;
begin
with Grid do
begin
Canvas.Font := Font;
for k := 0 to Columns.Count - 1 do
arrMax[k] := Canvas.TextWidth(Fields[k].FieldName) + DEFBORDER;
DataSource.DataSet.DisableControls; //To disable cursor updates
DataSource.DataSet.First;
while not DataSource.DataSet.EOF do
begin
for k := 0 to Columns.Count - 1 do
begin
iTemp := Canvas.TextWidth(trim(Columns[k].Field.DisplayText)) + DEFBORDER;
if iTemp > arrMax[k] then arrMax[k] := iTemp;
end;
DataSource.DataSet.Next;
end;
DataSource.DataSet.First;
DataSource.DataSet.EnableControls;
for k := 0 to Columns.Count - 1 do
if arrMax[k] > 0 then
Columns[k].Width := arrMax[k];
end;
end;
SetColumnWidths(dbgOutput);