13.07.2015 Aufrufe

Makro-Kochbuch - WollMux

Makro-Kochbuch - WollMux

Makro-Kochbuch - WollMux

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Jeder erfolgreiche Speicherprozess setzt immer das Modified-Flag des Dokumentes zurück!3.3.1 Dokument schließenMit der Methode close() wird ein Dokument geschlossen. Ist das Modified-Flag gesetzt, soerfolgt von OOo aus die Benutzer-Abfrage, ob die geänderten Daten gespeichert werden sollen.In der Regel ist diese Abfrage im <strong>Makro</strong>-Verlauf weder sinnvoll noch erwünscht. Ein eventuellerSpeicherzyklus muss vom Entwickler / von der Entwicklerin vorher abgefangen und bearbeitetwerden.Sorgen Sie also dafür, dass vor der close-Anweisung das Modified-Flag auf „False“ steht. Dieskönnen Sie zum Beispiel erreichen durch die Store()-Prozedur in der Zeile vorher oder durchmanuelles Überschreiben des Modified-Flags. Beispiel:if oDoc.isModified then odoc.setModified = falseodoc.close(true)Das Zurücksetzen des Modified-Flags verwirft allerdings auch alle Änderungen seit dem letztenSpeichern – ein manchmal durchaus erwünschtes Verhalten. Ansonsten sollte vor demZurücksetzen unbedingt ein Speicherprozess stattfinden.Die Methode close() erwartet einen Boolschen Wert als Parameter. In Basic-Programmierungensollte dieser immer „True“ sein – das bedeutet, dass der Schließprozess an eventuell andereProzesse abgegeben wird, die ein Schließen noch verhindern. Diese Prozesse übernehmendann die Verantwortung für den erfolgreichen Abschluss des Schließens.Mit der Übergabe „False“ verbleibt die Verantwortung im aktuellen Prozess – der/dieEntwickler/in muss jetzt selbst dafür sorgen, dass es keine CloseVetoExeptions mehr gibt – dasheißt er/sie müsste sich alle Listener ansehen und quasi abfragen, ob es noch Einsprüchegegen das Schließen gibt – und das Dokument erst dann schließen, wenn alle eventuellenEinsprüche aufgehoben wären. Das ist in Basic unüblich. Dieser Weg wird nicht empfohlen.Ein „hartes“ Schließen ist auch durch das Zerstören des Dokumentenobjektes möglich:oDoc.dispose()Da dadurch aber auch alle anderen Prozesse „zwangsbeendet“ werden, kann es unterUmständen zu Verlusten kommen. Die Methode sollte nicht verwendet werden. Lediglich, fallsKompatibilität zu sehr frühen OOo-Versionen (1.x) gewahrt werden muss, kann es sein, dieMethode einsetzen zu müssen. Es sollte dann die folgende If-Bedingung verwendet werden:if HasUnoInterfaces(oDoc, "com.sun.star.util.XCloseable") thenoDoc.close(true)elseoDoc.dispose()end ifWichtig bei Dokumentenmakros:LHM – <strong>Makro</strong>-<strong>Kochbuch</strong> 2012 49

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!