🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro mittels .Events.ReplaceByName zuweisen

Alles zur Programmierung im LibreOffice.
Antworten
gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Makro mittels .Events.ReplaceByName zuweisen

Beitrag von gogo » Fr 21. Jun 2013, 15:39

Hallo,

ich habe ein unangenehmes Probelm. Ich muss für eine Base-Datenbank ein Modul mit gefühlten 200 Prozeduren in kleinere Module zerlegen - dadurch werden alle Verweise auf Funktionen und Subs in der *.odb ungültig

Code: Alles auswählen

Standard.multi.TOOL_ExportToPDF (document, Basic)
gibt's dann nicht mehr, es gibt dann nur mehr

Code: Alles auswählen

Standard.TOOLS.TOOL_ExportToPDF (document, Basic)
... u.s.w.
... und das bei 49 Formularen und ungezählten Buttons und sonstigen Events an denen Makros dranhängen.
Ich werde also ein Makro schreiben, dass in der ganzen ODB die Formulare abklappert und dadrin alle Subformulare und Subsub.. und jedes Kontrollelement auf verlinkte Events kontrolliert und diese dann mit dem neuen gültigen Pfad versieht.

Nun müsste das mit .Events.ReplaceByName funktionieren, aber diese Methode ist so weit ich auch gegoogelt habe nur mit grafischen Objekten beschrieben.

Daher:
1. Weiß jemand wie man zu den Event-Objekten kommt? (thisComponent.Forms.Drawpage...)
2. Weiß jemand ob diese dann mit .ReplaceByName manipulierbar sind?

thx!
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Makro mittels .Events.ReplaceByName zuweisen

Beitrag von gogo » Sa 22. Jun 2013, 15:48

brute force!

... aber sehr erfolgreich:
  1. Start um 15:00
  2. Entzippen der odb
  3. erstellen eines sed-Scripts mit:

    Code: Alles auswählen

    s/.ALTER_MODULNAME.PROZEDURNAME/.NEUER_MODULNAME.PROZEDURNAME/g;
  4. ein bash-script erstellen, das in allen Unterverzeichnissen des forms-Ordners ("Obj000" ...) in der Datei content.xml das sed-Script ausführt
  5. die sed-Ausgabe in einem neuen forms/Obj000/ Verzeichnisbaum speichern
  6. diese Verzeichnisse in die odb-Datei rückkopieren
  7. 15:23 fertig!
Bitte beachten, dass damit
  1. KEINE Dialoge und auch
  2. NICHT das UID und
  3. KEINE Symbolleisten
verändert werden - die paar Klicks sind aber in meinem Fall händisch zu bewerkstelligen.

Schema der Datei "mod_ersetzen.sed" (=sed-Script)

Code: Alles auswählen

# sed-Script zum Ersetzen des Modulnamen 'multi'

s/.multi.OPT_gDB_UserdatenSetzen/.Deklarationen.OPT_gDB_UserdatenSetzen/g;
s/.multi.array_anzeigen/.DEV.array_anzeigen/g;
s/.multi.TOOL_OptionStringToArray/.TOOLS.TOOL_OptionStringToArray/g;

# ... u.s.w : für jede zu ersetzende Prozedur muss eine sed-ersetzung vorgenommen werden !!!

p; 
Schema der bash-Datei die das sed-Script auf die content.xmls anwendet und neue content.xmls erstellt

Code: Alles auswählen

#!/bin/bash
sed -n -f ~/mod_ersetzen.sed ~/DB/Dokumente/forms/Obj101/content.xml > ~/DB_neu/Dokumente/forms/Obj101/content.xml

# ... u.s.w. für JEDEN Obj-Ordner (d.h. für jedes Formular) muss eine Zeile vorhanden sein - am 
# besten is das mit einer calc-Datei zu realisieren.
# die Ordner /DB_neu/Dokumente/forms/Obj101 etc. müssen auch alle vorhanden sein,
# das Script kann man ebenfalls mit der calc-Datei erstellen
# der Befehl waere: mkdir ~/DB_neu/Dokumente/forms/Obj101

exit 0
ich hoffe das hilft - ich wäre aber trotzdem daran interessiert wie man an die Event-Objekte kommt...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Makro mittels .Events.ReplaceByName zuweisen

Beitrag von F3K Total » Mo 24. Jun 2013, 05:52

Hi,
dein Suchbegriff: RegisterScriptEvent
z.B.hier
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten