Einzelnen Beitrag anzeigen

Naka1985

Registriert seit: 2. Mär 2013
7 Beiträge
 
#1

Stringgrid - Spalteweite - Anpassung an Text

  Alt 4. Aug 2013, 14:48
Hallo Zusammen,

ich brauche mal wieder Eure Hilfe.

Ich möchte, dass die Spalten eines Stringgrid nicht breiter sind als notwendig. Dazu habe ich mir folgenden Code zusammenstepitzt und modifiziert:

Delphi-Quellcode:
with stringgrid1 do
    begin
      for Spalte:=0 to (ColCount -1) do
        begin
          len:=0;
          for Zeile:=0 to (RowCount-1) do
            begin
              tmp:=Canvas.TextWidth(Cells[Spalte,Zeile]) + 50;
              if tmp>len then len:=tmp;
              ColWidths[Spalte]:=len;
            end;
        end;
    end;

Leider führt dieser nicht zum gewünschten Ergebnis. Ich vermute, dass ich "TextWidth" falsch interpretiere. Ich habe bereits versucht die Variable tmp um einen beliebigen Faktor (hier +50) zu erhöhen, damit ich "einkalkuliere", dass die Spalten auch Ränder haben.

Dies klappt auf dem ersten Blick auch.

Ein Problem tritt dann auf, wenn die Zeichenketten in den Cells eine unterschiedliche Länge haben; dann funktioniert nämlich der Code nicht mehr wie gewünscht:

Der Abstand zwischem dem letzten Buchstaben einer Zeichenkette einer Zelle X,Y zu ihrem Rand ist in Abhängigkeit von der Länge der Zeichenkette unterschiedlich groß.

Zur Illustration habe ich mal ein Bild beigefügt:

Ich hoffe mein Problem ist deutlich geworden...

Danke für Eure Hilfe !
Miniaturansicht angehängter Grafiken
grid.jpg  
  Mit Zitat antworten Zitat