Tabellenhöhe ermitteln

  • Hallo,

    ich erzeuge eine Tabelle ungefähr so:

    Dabei entsteht die gewünschte Tabelle mit 2 normalen Zeilen in der Mitte sowie 2 schmalen Zeilen oben und unten.

    Zur Positionierung im Header benötige ich nun die (Gesamt)-Höhe dieser Tabelle.

    Table.Height gibt mir 424 zurück, durchlaufe ich alle Zeilen per Schleife

    Code
    WPRichText1.ReformatAll(false, true);
    WPRichText1.Repaint;
    h:=table.Height();  //<-- 424
    for i := 0 to 3 do
      h:=Table.rows[i].Height(); //<-- jede Zeile 106

    bekomme ich für jede Zeile 106, was beides nicht stimmen kann!

    Wie ermittle ich korrekt die Höhe dieser Tabelle?

    Danke

    Ciao

    Stefan

  • Die Schleife liefert doch aber (nach einem Reformat) für alle 4 Zeilen die gleichen 106, obwohl rein optisch die oberste und unterste Zeile nur eine ganz geringe Höhe haben im Gegensatz zu den beiden mittleren Zeilen mit Text!

    Mache ich den Text in der Schriftart riesig, dann haben die beiden schmalen Zeilen 106 und die mit Text 1200...

    Ich verstehe irgendwie das Verhalten der Höhenbestimmung nicht!

    Ich habe noch ein wenig herumgespielt:

    Ich habe der schmalen Zeile oben eine andere Schriftart zugewiesen, sie enthält weiterhin keine Texte...

    Jetzt wird aus den 106 122!

    Wenn ich auf eine Zelle in Zeile 2 oder 3 in den Text klicke, hat dieser laut Toolbar keine Schriftart und keine Schriftgröße!

    Nach Einstellung von Schriftart und Größe ändert sich die ausgelesene Höhe der Zeile von 106 auf eine andere Höhe...

    Irgendwas läuft schief?

    Ciao

    Stefan

    Einmal editiert, zuletzt von skoschke (15. März 2019 um 08:08)

    • Offizieller Beitrag

    Die Höhe berechnet sich aus der Höhe der Zeichen wie sie auch im Text angezeigt werden. Wenn ein Absatz leer ist, dann wird bei der Berechnung die Default Fonthöhe herangezogen sofern für den Absatz keine default attribute verwendet werden, wie dies nach dem Laden aus RTF der Fall ist.

    Die font höhe aus den Absatzattributen (WPAT) wird hier nicht verwendet.

    Die Einheit ist, wie bekannt, Memo.CurrentYPixelsPerInch, normalerweise ist dieser Wert 600. Also nicht twips.

    Ich wiederhole gerne mein Angebot für Ihre Problemstellung als Auftragsarbeit einen Lösungsvorschlag zu erarbeiten!