Am 10.11.2017 um 07:11 schrieb Wolfgang Jäth:
Am 09.11.2017 um 16:53 schrieb Volker Lenhardt:
Am 09.11.2017 um 06:56 schrieb Wolfgang Jäth:
Am 08.11.2017 um 18:48 schrieb Volker Lenhardt:
Es geht ... darum, dass ich
nicht einen Double-Wert von 350.0 als Zeilenhöhe eingebe, sondern exakt
350.
Nein, du gibst "0,35 cm" ein. Das ist keine Ganzzahl.
Dass das GUI 0,35 anzeigt, ist gut und richtig, nämlich
benutzerfreundlich. Mir geht es aber um die Höhenfestlegung per Makro,
und die geschieht mit einer Ganzzahl. Zitat aus der IDL reference:
Dim lRowHeight As Long 'com::sun::star::table::TableRow
'Public Attribute: long Height
'contains the height of the row (in 1/100 mm).
Wenn dieser Wert intern wieder in einen Gleitkommawert gewandelt wird,
so hätte man doch als Eingabe gleich den Typ Double festlegen können.
Hoppla, jetzt beim Schreiben beschleicht mich der Verdacht, dass die IDL
überall nur Typ Long vorsieht :-/
Ich muss das mal überprüfen.
Die Zeilenhöhe spielt für mich insofern eine Rolle, dass ich vermeiden
möchte, dass beim Ausdruck der Gesamtgrafik auf der letzten Seite nur
ganz wenige Zeilen stehen. Daher berechne ich Zeilenanzahl pro Seite und
erhöhe bzw. vermindere die Zeilenhöhe so, dass die letzte Seite nicht
ganz so verloren aussieht. (Die Zeilenanzahl, die Grafikdatei und
weitere Parameter werden über einen Dialog ermittelt.)
Ich habe nun gelernt, dass ich nach dem Setzen der Zeilenhöhe die
tatsächliche Höhe auslesen muss. Die Differenz beim Vergleich mit der
Seitenhöhe ist dann so gering, dass man damit leben kann.
Moment mal; im OP ging es dir darum ein Bild o. ä. exakt in x Zeilen ein
zu passen. Was hat das mit der Seitenhöhe oder der Anzahl Zeilen pro
Seite zu tun?
Tut mir Leid, dass da ein Missverständnis entstehen konnte. Ich hatte im
OP gezeigt, wie ich die tatsächliche Gesamthöhe der Zeilen ermittele,
nämlich über die Y-Positionen. Mein erster Ansatz war allerdings die
Multiplikation der Zeilenanzahl mit der Zeilenhöhe gewesen, der dann
leider nicht das gewünschte Ergebnis brachte. Ich bat um eine Erklärung
für die Differenz.
Dass ich die Zeilenhöhe auch zur Berechnung der Zeilen pro Seite
benötige, hätte ich allerdings schon im OP erwähnen können.
Ganz simpel: iRowsPerPage = lPageHeight \ lRealRowHeight
Und: iRowsOnLastPage = iRows Mod iRowsPerPage
Oder was wäre besser?
Ich würde lPageHeight um einen minimalen Betrag (z. B. 0,00001 cm o. ä.)
ab- und lRealRowHeight entsprechend aufrunden (oder einfach von der
Division selbst vor dem Abrunden einen winzigen Betrag fix abziehen), um
möglicherweise bereits hier vorhandene Rundungsfehler sozusagen auf die
sichere Seite zu schieben. Andernfalls könnte es im Extremfall passieren
(wenn nämlich die beiden Werte unglücklich zur falschen Seite gerundet
werden, und das Ergebnis auch noch ganz knapp bei einer runden Zahl
liegt), dass du als Ergebnis der Division statt z. B. einem (korrekten)
2,999999999 ein (falsches) 3,000000001 o. ä. bekommst; ansonsten kann
ich so auf die Schnelle kein nennenswertes Problem entdecken.
Werde ich testen. Danke für den Tipp.
Schöne Grüße
Volker
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.