Hallo zusammen,
für die Breite habe ich das so gemacht:
Delphi-Quellcode:
procedure HGGridColWidth(AGrid: TStringGrid; AMinWidth: Integer);
var
liZ1: Integer;
liZ2: Integer;
liWidth: Integer;
liTextWidth: Integer;
liMaxWidth: Integer;
const
ciWidthAdd = 5;
begin
if (AMinWidth < 0) then
begin
AMinWidth := AGrid.DefaultColWidth;
end;
for liZ1 := 0 to (AGrid.ColCount -1) do
begin // alle Spalten
liMaxWidth := 0;
for liZ2 := 0 to (AGrid.RowCount - 1 ) do
begin // alle Zeilen
liTextWidth := AGrid.Canvas.TextWidth(AGrid.Cells[liZ1, liZ2]);
if (liTextWidth > liMaxWidth) then
begin
liMaxWidth := liTextWidth;
end;
end;
if ((liMaxWidth + AGrid.GridLineWidth + ciWidthAdd) > AMinWidth) then
begin
liWidth := liMaxWidth + AGrid.GridLineWidth + ciWidthAdd;
end
else
begin
liWidth := AMinWidth;
end;
AGrid.ColWidths[liZ1] := liWidth;
end;
end;
Das kann man mit ein bischen Fantasie auch problemlos auf die Zellenhöhe übertragen.