Einzelnen Beitrag anzeigen

Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#1

[Firemonkey] Stringgrid AutoSize

  Alt 27. Jul 2016, 12:10
Ich nutze folgenden Code um die Spaltenbreite meines Stringgrids anzupassen:

Delphi-Quellcode:
procedure TForm.GRDPaint(Sender: TObject; Canvas: TCanvas;
  const [Ref] ARect: TRectF);
var
  i: integer;
begin
  GRD.BeginUpdate;
  for i := 0 to GRD.ColumnCount - 1 do
    AutoSizeCol(GRD, i);
  GRD.EndUpdate;
end;

procedure TForm.AutoSizeCol(Grid: TStringGrid; Column: integer);
var
  i, W, WMax: integer;
begin
  WMax := 0;
  for i := 1 to (Grid.RowCount - 1) do begin
    W := round(Grid.Canvas.TextWidth(Grid.Cells[Column, i]));
    if W > WMax then
      WMax := W;
  end;

  if WMax*2 > Grid.Columns[Column].Width then
  begin
    Grid.Columns[Column].Width := WMax*2;
  end;
end;
Dies Funktioniert auch wunderbar, wenn in diesem Grid denn mehr als ein Eintrag vorhanden ist. Ist dort nur einer Vorhanden, wird stumpf die Standardbreite des Grids verwendet.

Weiss einer woran das liegt, oder besser noch einen Lösungsansatz?

Oder hat einer eine Bessere Idee wie man das AutoSize des Stringgrids ausführen kann?
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat