StringGrid, Spaltenbreite automatisch anpassen lassen?

BackdoorSpy

Grünschnabel
Hi!
Ich versuche mal meine frage bzw. mein problem so genau wie möglich darzustellen =)

Also, ich habe ein Program zum Daten erfassen geschrieben. Man gibt die daten ein, speichert sie ab und wenn man sie läd, dann werden sie in einem StringGrid angezeigt. Funktioniert soweit alles wunderbar, habs auch durch suchen hier im forum hinbekommen, den inhalt des StringGrid ausdrucken zu lassen.

Alles super....nur hab ich nun die frage, ob es möglich ist, dass sich die spalten für z.B. "name" oder "anschrift" je nach länge des eingebenen textes verbreitert, damit man auch alles lesen kann und der text nicht "abgehackt" ist ?

Ich hoffe, dass ich es wenigstens so einigermaßen verständlich dargestellt habe, was ich möchte bzw. wobei ich hilfe brauche =)

MfG,
BackdoorSpy

PS: Habe grad erst mit dem programieren in delphi angefangen, also wär es gut falls ihr eine lösung kennst, diese so gut wie möglich zu beschreiben =)
 
Hier die Lösung aus dem Kohbuch:
Code:
procedure grdColWidth(grd: TStringGrid; min: Word);
var i, j, tmp, max: Word;
const dx = 5;

begin
  with grd do begin
    for j := 0 to (ColCount -1) do begin         // alle Spalten
      max := 0;
      for i := 0 to (RowCount - 1 ) do begin     // alle Zeilen
       tmp := Canvas.TextWidth(Cells[j, i]);
       if tmp > max then max := tmp
      end;
      if max > min then                          // nur wenn Minimalbreite überschritten wird,
      ColWidths[j] := max + GridLineWidth + dx  // ... dann Spalte verbreitern
     end
  end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 grdColWidth(StringGrid1, 30)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 StringGrid1.Options := StringGrid1.Options + [goEditing] + [goTabs]
end;

end.
 
Zurück