Hallo,
ich habe mir eine Funktion gebastelt mit der ich die Spaltenbreiten in einem StringGrid automatisch ermittle:
Delphi-Quellcode:
procedure prTStringGridAutoFit(strgrid : TStringGrid);
var
iMaxTextLength : Integer;
iCol, iRow : Integer;
begin
//=== Auto Fit Columns =======================================================
For iCol := 0 to (strGrid.ColCount -1) Do
Begin
iMaxTextLength := 0;
For iRow := 0 To (strGrid.RowCount - 1 ) Do
Begin
If strGrid.Canvas.TextWidth(strGrid.Cells[iCol, iRow]) > iMaxTextLength Then
Begin
iMaxTextLength := strGrid.Canvas.TextWidth(strGrid.Cells[iCol, iRow]);
End;
End;
strGrid.ColWidths[iCol] := iMaxTextLength + 25;
End;
//============================================================================
end;
In meinem aktuelle StringGrid habe ich unterschiedliche Schriftgrößen und Formattierungen (Fett, usw.)...
An was Orientiert sich denn die TextWidth Funktion? Nimmt es zur Berrechnung der Text Länge zufällig die Größte Schriftgröße?
Weil in meinem aktuellen Fall habe ich das Problem das ich in der ersten Spalte in kleinerer Schrift lange Texte hab und darunter einen kurzen Text mit einer größeren Schriftgröße und meine Spaltebreite absolut nicht zu den Text längen passt...?