Makrorekorder

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

Moderator: Moderatoren

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

Makrorekorder

Beitrag von martin11 »

Hallo Stephan
Tom schreibt, davon solle man besser die Finger lassen.
Weil damit nur fest verdrahte Funktionen speichern und wiedergeben kann.
Woran erkenne ich solche Funktionen?
Und was passiert, wenn solcher code auftaucht?
Ist das Problem mit den neuen Versionen ab 6.1 gelöst
Läuft dann dein Code?

Code: Alles auswählen

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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPagebreak", "", 0, Array())

end Sub
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makrorekorder

Beitrag von Stephan »

Weil damit nur fest verdrahte Funktionen speichern und wiedergeben kann.
Woran erkenne ich solche Funktionen?
Die "fest verdrahteten Funktionen" nennen sich dispatch-Befehle und sind dokumentiert:
https://wiki.openoffice.org/wiki/Framew ... x_Commands

Hinweis: trotzdem dort OOo 2.x steht, ist diese Liste auch für aktuelle Programmversionen (AOO 4.1.x und LO 6.2.x) noch zu 99% aktuell bzw. ich könnte eigentlich nicht einmal sagen on es überhaupt dort aufgelistete Befehle gibt, die nicht mehr stimmen würden.

Praktisches Problem ist das der Makrorekorder, in machen Fällen, nicht alle Parameter notwendigen der dispatch-Befehle aufzeichnet und/oder fälschlich die dispatch-Zeile auskommentiert.
Das Auskommentieren braucht man nur per Hand zu korrigieren (indem man überflüssige "rem" (NUR überflüssige!) im Code entfernt. Fehlende Parameter sind schwieriger per Hand zu korrigieren, da Parameter nirgends zusammenhängend dokumentiert sind und man sie sich im Internet zusammensuchen muss und manchmal auch nichts findet.
Im Übrigen benötigen nicht alle dispatch-Befehle Parameter, z.B. ".uno:InsertPagebreak" benötigt Keine.
Und was passiert, wenn solcher code auftaucht?
er wird ausgeführt (denn die Frage zielt ja hier nur auf "solche Funktionen") bzw. fehlerhafter Code wird entweder garnicht (wenn fälschlich auskommentiert) oder unvollständig ausgeführt (wenn Parameter fehlen).
Ist das Problem mit den neuen Versionen ab 6.1 gelöst
Läuft dann dein Code?
Der untenstehende Code läuft in faktisch allen OO/LO-Versionen, seit OOo 2.0.0.


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

Re: Makrorekorder

Beitrag von martin11 »

Der Code läuft in 6.2.2. nicht.
Faol schrieb mir, der sei unbrauchbar!
Den habe ich mit dem Recorder erstellt.
Was tun?
Martin

Code: Alles auswählen

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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPagebreak", "", 0, Array())

end Sub
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makrorekorder

Beitrag von Stephan »

Was tun?
das was in einem anderen Thread (den Du selbst dazu eröffnet hast) bereits ausführlich besprochen wurde:
viewtopic.php?f=18&t=71867


Gruß
Stephan
Antworten