manueller seitenumbruch besser definiert und Makro dazu

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

martin11
*****
Beiträge: 237
Registriert: Do, 30.03.2017 16:07

manueller seitenumbruch besser definiert und Makro dazu

Beitrag von martin11 »

Aufgabe
Es soll ein manueller Seitenumbruch am letzten Zeichen einer Seite eingefügt werden.
Bisher dieses Vorbereitung mit Hand
Ist das letzte Zeichen kein Absatzzeichen, soll der dort unabhängig von allem eingefügt werden.
Dieser darf nicht auf die nächste Seite umspringen.
Dann gehe ich per Menü zum manuellen Seitenumbruch.
Ich wähle dort den Seitenumbruch.
Es wird die Linie eingefügt, die diesen Umbruch anzeigt.
Und es entsteht auf der nächsten Seite ein leerer Absatz.
Es ist also nicht wie bisher beschrieben eine Kopfzeile, die mit Format Seite Kopfzeile erstellt wird.
Ich habe ein Makro mit dem Namen modKopfZeile.bas. Der ist verführerische wegen Kopfzeile.
Deshalb war bisher von dem Begriff Kopfzeile die Rede

Mit diesem Makro wird in den oberen leeren Absatz aus einer Calc mit einem Algorithmus ein Text eingefügt.

Diese Aufgabe soll mit einem Makro gelöst werden. Das soll den Namen z. B. haben modManuUmbruch oder ähnlich bekommen.
Problem mit Tabellen
Diese Makro versagt aber, wenn über und unter einer Tabelle keine leereren Absätze vorhanden sind.
Lange Tabellen habe ich von Hand entsprechend getrennt.
Jetzt haben also alle Tabellen oben und unten einen leeren Absatz.
Problem mit Grafiken
Unterhalb einer Grafik muss immer noch ein leere Absatz sein.
Also habe ich alle Grafiken so platziert, dass die Bedingung erfüllt ist.
Problem mit den Stichworten.
Die müssten wie die Tabellen mit leeren Absätzen getrennt sein.
Da das bisher nicht möglich ist, soll das Makro beendet werden, wenn es auf Stichworte stößt.

Makrorekorder
Nach den Beschreibungen dem Buch Makrogrundlagen Band 1
habe ich diese Makro erstellt.
Wie das Wort Kind darein kommt, ist mir unklar.
Diese Makro modManuUmbruch soll letzten Endes alles bewältigen.
Ich hoffe, es lässt sich ein "Hauptmakro" erstellen, das die verschiedenen "Abschnitte" aufnimmt.

Code: Alles auswählen

REM  *****  BASIC  *****
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Kind"
args1(0).Value = 3
args1(1).Name = "TemplateName"
args1(1).Value = ""
args1(2).Name = "PageNumber"
args1(2).Value = 0

dispatcher.executeDispatch(document, ".uno:InsertBreak", "", 0, args1())
end sub
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: manueller seitenumbruch besser definiert und Makro dazu

Beitrag von Toxitom »

Hallo Martin,

wieviel Theards mit dem gleichen Inhalt willst Du eigentlich noch starten?

Natürlich sind Deine Aufgaben per Makro lösbar - wenn auch dafür jede Menge Grips und Zeit investiert werden müsste. Progrmmierung ist eben keine "mal so" Aufgabe und die Aufgabenstellungen werden immer komplexer und komplizierter.

Lies mal Deine "alten" Themen in Ruhe durch - da habe ich Dir bereits die Hinweise gegeben, dass das alles soooo einfach nicht ist.

siehe bsp. hier:
https://de.openoffice.info/viewtopic.ph ... 67#p281822

Und der Makrorecorder wird Dich auch nicht weiterbingen. Wurde Dir auch schon mehrfach gesagt.

Grob geschätzt: Dein gewünschtes Makro benötigt sicher so 30-40 Std Programmierung, Tests, Dokumentation und "Härtung" - in der Voraussetzung, Du könntest die Funktion abschliessend beschreiben! (Lastenheft) und es kommt nicht noch mehr dazu (was sicher der Fall ist;)). Deine geposteten Codeschnipsel sind völlig wertlos.

Wenn Du die Programmierstd mit 50-80,- EUR ansetzt weisst Du ungefähr, was das Makro Dich kosten würde - und der Aufwand lohnt sicher nicht für das eine Buch oder möglicherweise die noch folgenden.
Beschäftige Dich doch lieber mit Satz und Gestaltung eins Buches mit Formatvorlagen, Kopf- und Fusszeilen für zukünftige Bücher und formatiere Dein jetziges manuell.

Ich kenne auch das Makro zum Auslesen der Texte aus der Calc-Datei - auch da waren noch Fehler drin. Und auch dieses wird nicht problemlos integriebar sein. Da sind und werden noch jede Menge Probleme auf Dich zukommen...

Viele Grüße
Tom

PS: Das "kind" in Deinem Code ist englich und bedeutet soetwas wie "Typ/Art". Beschreibt die Form des Umbruchs - gibt ja neben Seitenumbruch auch noch Spaltenumbrüche und Zeilenumbrüche.
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: manueller seitenumbruch besser definiert und Makro dazu

Beitrag von Stephan »

Wie das Wort Kind darein kommt, ist mir unklar.
Genauso wie die anderen zwei Property-Namen ("TemplateName" und "PageNumber"). "Kind" steht hier für englisch "Art", also die Art des Umbruchs. Durch Ausprobieren(*) kann man er mitteln: 0-kein Umbruch, 1-Zeilenumbruch, 2-Spaltenumbruch, 3-Seitenumbruch.

(*)
Wie schon geschrieben sind die Parameter der dispatch-Befehle nirgends zusammenhängend dokumentiert (es ist auch also nicht so das der hier in Rede stehende Parameter gleich "BreakeType" (siehe API: http://www.openoffice.org/api/docs/comm ... kType.html) wäre oder sich an diesen anlehnt.

Gruß
Stephan
Antworten