ColWidth anpassen ?
-
Hi@all
wie kann ich die Breite einer Spalte an deren Inhalt anpassen ?
Code:
StringGrid1->ColWidths[ilCol] = celldata.Length()*10;
Ist zwar schon ganz gut aber eben nicht proportional zum Text .
Also bei 5 Zeichen wird die Spalte 50 breit .
Bei 20 Zeichen ist das aber schon zuviel (200 Breit)Hat jemand ne beserre Lösung ?
Thx@all
-
such mal nach StringGrid und Spaltenbreite oder nur StringGrid und Spalte. dazu gabs schon mal ne antwort.
-
Thx - aber Sorry nichts passendes gefunden .
-
dann gugg mal in die hilfe unter TextWidth
-
Jepp - Hat geholft - Thx.
int textbreite=Canvas->TextWidth(celldata); if (StringGrid1->ColWidths[ilCol] < textbreite) { StringGrid1->ColWidths[ilCol] = textbreite+10; }
By
-
Du solltest allerdings den StringGrid-Canvas als Grundlage benutzen, da hier die Schriftart (und somit die Textbreite) nicht notwendigerweise identisch mit der der Form ist.
void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol, int ARow, const AnsiString Value) { int tw = StringGrid1->Canvas->TextWidth(Value); if (StringGrid1->ColWidths[ACol] < tw) StringGrid1->ColWidths[ACol] = tw + 10; }