ich lade aus einer SQL-Datenbank in ein DBGrid - soweit so gut.
Leider, passt sich die Spaltenbreite aber nicht dem Inhalt an.
Auch ein:
Code: Alles auswählen
DBGrid1.Options := DBGrid1.Options + [dgAutoSizeColumns];
DBGrid1.AutoAdjustColumns;
Also, habe ich im Netz gesucht und bin auf diesen Code gestoßen:
Code: Alles auswählen
Procedure TForm1.AutoSizeColDBGrid(DBGrid:TDBGrid);
var i, ColWidth, ColTextWidth:integer;
begin
if DBGrid.DataSource.DataSet.Active then
begin
DBGrid.DataSource.DataSet.DisableControls;
for i:= 0 to DBGrid.Columns.Count-1 do
begin
ColWidth:=DBGrid.Canvas.TextWidth(DBGrid.Columns[i].Field.DisplayLabel);
DBGrid.DataSource.DataSet.First;
while not DBGrid.DataSource.DataSet.EOF do
begin
ColTextWidth:=DBGrid.Canvas.TextWidth(DBGrid.Columns[i].Field.DisplayText);
if (ColTextWidth > ColWidth) then
begin
ColWidth := ColTextWidth;
end;
DBGrid.DataSource.DataSet.Next;
end;{while}
DBGrid.Columns[i].Width:=ColWidth+10;
end;{for}
DBGrid.DataSource.DataSet.EnableControls;
DBGrid.DataSource.DataSet.First;
end;
end;
Also, schickte ich noch ein:
Code: Alles auswählen
DBGrid1.Refresh;
DBGrid1.Repaint;
Ich habe jetzt vom Dreizeiler über den Code oben bis zu Code mit mehreren Proceduren und Funktionen, verschiedenen Code erfolglos probiert.
Ich schätze mal, das ich irgendeine Info nicht habe ...
Gruß Heiko