Einzelnen Beitrag anzeigen

BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#1

TStringGrid Größe ermitteln

  Alt 26. Aug 2020, 22:02
Hallo zusammen,

ich muss einige Tabellen zur reinen Ausgabe von Daten ausgeben. Das soll dann z.B. so aussehen:

test01.png

Ich nutze dazu das TStringGrid, da mir da die VCL am wenigsten vorschreibt. Beim TListView habe ich z.B. das Problem, dass ich den Header nicht zo gezeichnet bekomme wie ich das will usw. Wie gesagt: Es handelt sich um eine reine Ausgabe, ohne jegliche Bedienung.

Das TStringGrid soll immer vollständig dargestellt werden. ScrollBars sind deaktiviert. Es werden also z.B. 4 Spalten und 8 Zeilen anzeigen. Die Breite ist variabel, das Grid wird dann entsprechen neu berechnet. Also z.B. Spalte 1 sind 40% der Breite, der Rest wird auf die restlichen Spalten aufgeteilt. Die Höhe ist aber in jedem Fall fix.

Ich versuche nun die exakte Höhe der Komponente zu berechnen, da andere Teile wieder dynamisch darauf reagieren. Da kommt jetzt das Problem:

Wie erhalte ich bei bekannte Zeilenzahl die exakt benötigte Höhe? RowHeight * RowCount haut nicht hin. Gebe ich z.B. 18 als Zeilenhöhe an, dann ist die Zeile in Wirklichkeit so 20 Pixel hoch. Dazu kommen dann noch die untere Linie, die Margins (AlignWithMargins ist True) etc. Im Moment habe ich das in etwa so im Quellcode:

(DefaultRowHeight + 2) * RowCount + Margins.Top + Margins.Bottom

Allerdings haut das noch wirklich hin. Die errechnete Höhe ist ein paar Pixel höher als die tatsächliche Höhe.

Hat irgendwer eine Idee wie man ein StringGrid auf exakte Größe bringen kann? Und wenn man die exakte Größe hat wie man die äußeren Dimensionen der Komponente exakt ermitteln kann? Width und Height sind ja wieder Größe abzüglich der Ränder...

Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat