Forum: Object-Pascal / Delphi-Language
by DeddyH,
3. Sep 2013
Auch wieder wahr.
Wenn man keinen InplaceEditor braucht, könnte man auch darüber nachdenken, das StringGrid gegen eine ListView mit ViewStyle vsReport auszutauschen. Die beherrscht das AutoFit schon von sich aus.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
3. Sep 2013
Das entspricht prinzipiell genau dem Gesagten. Und das kann man auch im OnDrawCell machen, und zwar zweckmäßigerweise vor oder hinter den DrawText-Aufrufen, da ist der aktuelle Font und der darzustellende Text bekannt.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
3. Sep 2013
Nach dem Befüllen nützt es Dir doch nichts mehr, das sagen wir doch die ganze Zeit.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
3. Sep 2013
Ja wann denn? Ich habe den Code gerade 4 mal durchgesehen, kann die Variable aber nirgends entdecken.
BTW: Ich würde den DRY-Code mal ein wenig entschlacken.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
3. Sep 2013
Und wo merkst Du Dir nun die maximale Breite je Spalte? Hab ich das übersehen?
Forum: Object-Pascal / Delphi-Language
by DeddyH,
3. Sep 2013
Da sowohl Cols als auch Rows von TStringGrid TStrings sind, könnte man auch theoretisch den jeweiligen Font in dessen Objects-Eigenschaft ablegen. Damit kann man dann dynamisch breiter/schmaler schalten oder die optimale Spaltenbreite berechnen.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
2. Sep 2013
Du zeichnest aber doch selber im OnDrawCell, oder wie bekommst Du die unterschiedlichen Schriftgrößen hin? Und dazu setzt Du dann StringGrid.Canvas.Font.Size. TextWidth wird dann aus dem aktuell zugewiesenen Font errechnet und nicht aus dem, den die Zeichenfläche zwischenzeitlich mal hatte.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
2. Sep 2013
Ich fürchte, das wird nicht funktionieren. Man kann einem StringGrid nur einen Font zuweisen, will man mehrere verwenden, muss man eben selbst zeichnen. Canvas.TextWidth dürfte sich aber lediglich auf den dem Grid-Canvas aktuell zugewiesenen Font orientieren.