el ancho de cada columna se ajusta segun la propiedad DisplayWith del campo asociado a cada columna. Modificando esa propiedad, y reabriendo el dataset, consigues que el texto se ajuste.
Código Delphi
[-]
procedure AjustaDisplayWidth(D:TDataSet;const MaxAncho:Integer = 150);
var i, nIdx:Integer;
begin
if D.Active then
begin
try
D.DisableControls;
D.First;
nIdx:=0;
while not D.Eof do
begin
for i:=0 to pred(D.FieldCount) do
begin
if (nIdx = 0) then
D.Fields[i].DisplayWidth := 1;
D.Fields[i].DisplayWidth :=EnsureRange(
Max( D.Fields[i].DisplayWidth,
Length(D.Fields[i].AsString)+
IfThen(D.Fields[i].DataType = ftFloat, 3,0)
),
0,MaxAncho);
end;
D.Next;
Inc(nIdx);
end;
finally
D.EnableControls;
end;
end; end;
Despues de hacer esto quizás tengas que hacer un DBgrid1.rebuildcolumns.
Saludos