Macro an Ereignis binden

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

Moderator: Moderatoren

TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Macro an Ereignis binden

Beitrag von TrueColor »

[System: Win 7, AOO 4.1.2]

Hallo,

ich habe ein Macro (Auto-Save/Close nach Inaktivität), welches in der Datei selbst gespeichert ist und gestartet werden soll, wenn das Dokument (.ods) geladen wurde. Das Macro selbst funktioniert einwandfrei, wenn ich es über eine Schaltfläche starte.

Als geeignete Ereignisse habe ich "Dokument öffnen" und "Laden des Dokuments beendet" gefunden.

Bei "Dokument öffnen" passiert gar nichts. Ich vermute, dass das Ereignis am Beginn des Öffnens ausgeführt werden soll. Und da das Macro in der zu öffnenden Datei enthalten ist, kann da nix passieren.

Bei "Laden des Dokuments beendet" gibt es massive Probleme. Eingaben werden nur verzögert angenommen, es wird fehlerhaft gerendert, das Dokument wird nicht automatisch geschlossen. Beim manuellen Schließen es eine Exception (ok, wohl wegen dem ListenerDispose, muss ich vlt. nochmal separat ans Beenden binden).

Ich hab mal beide Dateien (einmal mit Schaltfläche, einmal onLoad) angehängt, der TimeOut beträgt zum Testen 10 Sekunden.

Hat wer eine Idee, wie ich das "onLoad" zum Laufen bekomme?

Vielen Dank!

p.s. Vermutlich kann ich erst am Montag wieder reinschauen.
Dateianhänge
Demo_Doc schließen nach Inaktivität_v00.03_20161202_onload_test.ods
(15.36 KiB) 98-mal heruntergeladen
Demo_Doc schließen nach Inaktivität_v00.03_20161202_button_test.ods
(16.05 KiB) 96-mal heruntergeladen
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Macro an Ereignis binden

Beitrag von TrueColor »

Update. Habe jetzt noch etwas herumprobiert.
Lade den Listener erst nach einem Wait. Bringt aber keine Verbesserung.
Edit: Hab ich wieder rausgeworfen.

Was aber aufgefallen ist: Sobald ich eine UI-Interaktion habe (sei es eine MsgBox im Code, die bestätigt werden muss, oder einfach nur das Benutzen eines Werkzeuges aus der Toolbar, z.B. Zellhintergrund färben) läuft es ohne Probleme. Habe das jetzt erstmal mit MsgBox gemacht. Mir wäre es aber lieber, wenn keine MsgBox nötig wäre, 30 min sollten im Produktiveinsatz ausreichend Zeit sein, ohne explizit warnen zu müssen.

Daraufhin habe ich (mit der MsgBox) nochmal mit den Ereignissen experimentiert:
"Laden des Dokuments beendet" --> kein Reaktion
"Dokument öffnen" --> fkt. wie geplant
Dateianhänge
Demo_Doc schließen nach Inaktivität_v00.04_20161205_onload_working.ods
(15.77 KiB) 188-mal heruntergeladen
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Macro an Ereignis binden

Beitrag von TrueColor »

Nochmal nachhaken:
Hat keiner eine Idee, wie ich das flüssig zum laufen bekomme, ohne dass ich eine Interaktion mit einem Oberflächen-Element wie z.B. Werkzeugleiste oder MsgBox erzwingen muss? Oder zumindest eine Idee, warum das so ist?

Oder tritt das Problem nur bei mir auf, dass das dann so rumspinnt?
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Macro an Ereignis binden

Beitrag von Stephan »

Das Problem tritt auch bei mir auf (OOo 3.3.0) und ich habe keine Idee wie man es beseitigt.


Gruß
Stephan
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Macro an Ereignis binden

Beitrag von TrueColor »

Danke für's testen, Stephan. So kann ich zumindest annehmen, dass nicht meine Unfähigkeit die Ursache ist :-)
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Macro an Ereignis binden

Beitrag von TrueColor »

Nach dem mir gestern noch der Gedanke kam, dass ich mal gelesen hab, der Dispatcher würde auf UI-Ebene arbeiten, habe ich einen (nicht schönen, aber zumindest bei mir funktionierenden) Workaround gefunden. Ich habe mit dem Macro-Recorder einfach ein sinnloses Umfärben des Zellhintergrundes außerhalb des Datenbereiches aufgenommen und lasse diese Aktion an Stelle der MsgBox laufen. Kein hakeln mehr, es lässt sich wieder ordentlich bedienen.

Kann das bitte mal wer testen?
Und ich bin immer für Vorschläge offen, das eleganter/einfacher umzusetzen.

Danke!
Dateianhänge
Demo_Doc schließen nach Inaktivität_v00.05_20161213_onload_working.ods
(16.21 KiB) 100-mal heruntergeladen
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
Antworten