Seite 1 von 2

Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 11:51
von erikafuchs
Thomas schreibt in seinem Buch, man könne ein Dokument auch nach Änderungen ohne Nachfrage schließen mit:
...
msgbox "Das neue Dokument soll nun ohne Rückfrage und ohne zu speichern wieder geschlossen werden!"
oNeuDoc.setModified(false) 'Modified Flag löschen
oNeuDoc.close(true) 'Datei schliessen
... das bekomme ich nicht hin, OO stürzt ab, es kommt die Meldung, dass das Dokument wiederhergestellt werden kann. Was mache ich hier falsch?

Ich finde noch folgendes Zitat von Thomas hier im Forum:
Der Schliessbefehlt für das Dokument sollte im Übrigen immer der absolut letzte Befehl im Makro sein, wenn dieses selbst im Makro gespeichert ist. Denn auch das Makro im Dokument ist ja ein Prozess, der das Schließen desselbsen (gleichbedeutend mit dem beenden des Prozesses) behindert! Achtung hier...
...
Aber ich hatte gehofft, dies mit dem "setModified(false)" zu umgehen. Wie kann ich ansonsten dafür sorgen, dass der Befehl "der absolut letzte Befehl" ist?

Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 13:11
von Karolus
Hallo
Du solltest an deinen Bezeichnungen arbeiten oNeuDoc ist einfach grausam, wie wäre es mit new_doc?

Code: Alles auswählen

…
new_doc.dispose()


Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 13:26
von erikafuchs
"oNeuDoc" ist eine direkte Kopie aus Thomas` Buch.
dispose() hat den gleichen Effekt - Programmabsturz und Wiederherstellungsoption.

Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 14:03
von Karolus
erikafuchs hat geschrieben: Mi, 03.11.2021 13:26 "oNeuDoc" ist eine direkte Kopie aus Thomas` Buch.
und ist damit ein geschützter Ausdruck, den man nicht kritisieren darf :lol:

erikafuchs hat geschrieben: Mi, 03.11.2021 13:26 dispose() hat den gleichen Effekt - Programmabsturz und Wiederherstellungsoption.
Das tut mir leid, hier funktioniert das ohne Probleme, selbst die Basic-IDE wird bei der Ausführung nicht mit in den Hades geschickt.

Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 16:14
von erikafuchs
Hallo Karolus,
das ist ja interessant. Ich hatte schon des Öfteren Probleme mit dem Schließen gehabt, auch in anderem Zusammenhang in meinem Programm. Vielleicht willst du mal ausprobieren, ob mein Rechentrainer sich bei dir ohne Programmabsturz schließen lässt. Beim Öffnen meiner Datei öffnet sich ein Dialogfenster, klicke auf "weiter" und im nächsten Fenster auf "Abbrechen" - dann sollte die Datei geschlossen werden. Mein Rechentrainer ist zwischenzeitlich zu groß um in hier als Dateianhang hochzuladen, hier ein Link: https://www.dropbox.com/s/ye8l2kqi5zkpi ... .ots?dl=0
Wenn irgendjemand den Code anschauen will, dann kann er mir gerne ein PN schicken wegen des Passwortes.

Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 16:50
von Karolus
Hallo
das 'abbrechen' funktioniert wie vorgesehen… kein Knall kein Rauch sogar die Katze bleibt völlig ruhig 8)

Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 17:40
von erikafuchs
Ist ja prima! AOO oder LO?

Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 17:49
von F3K Total
Moin,
eine kleine Beispieldatei, funzt bei mir unter AOO und LO, unter Windows 10 getestet.

Gruß R

Re: Dokument ohne Speichern schließen

Verfasst: Mi, 03.11.2021 18:05
von erikafuchs
Wie jetzt????
Was ist denn "thisComponent.close -1"?
Das habe ich noch nie gesehen - warum sagt mir das keiner? Das funktioniert ... sogar bei mir!

Re: Dokument ohne Speichern schließen

Verfasst: Sa, 06.11.2021 15:58
von Stephan
Was ist denn "thisComponent.close -1"?
Das habe ich noch nie gesehen - warum sagt mir das keiner?
Ich habe das so auch noch nie gesehen, auch wenn ich vermute das ist nur ein Äquivalent zum (mir) Geläufigen:

Code: Alles auswählen

thisComponent.close(True)
siehe API zu .close, Parameter "DeliverOwnership":
https://www.openoffice.org/api/docs/com ... html#close


@Rick
würdest Du sagen woher Du DEinen Code hast?


Gruß
Stephan

Re: Dokument ohne Speichern schließen

Verfasst: Sa, 06.11.2021 16:35
von erikafuchs
... nur, dass weder "ThisComponent.close(true)" noch "ThisComponent.dispose()" funktioniert (ohen Absturz) - "ThisComponent.close -1" aber schon.

Re: Dokument ohne Speichern schließen

Verfasst: Sa, 06.11.2021 18:02
von F3K Total
Stephan hat geschrieben: Sa, 06.11.2021 15:58 ...würdest Du sagen woher Du DEinen Code hast?
Klar, würde ich, wenn ich es noch wüsste. Habe ich irgendwo aus einem Forum, vielleicht das alte abgeschaltete englische ooo Forum, hier hatte ich es anno 2014 schon einmal geschrieben.
Gruß R

Re: Dokument ohne Speichern schließen

Verfasst: Sa, 06.11.2021 18:10
von Karolus
Hallo

Mir ist die -1 im Kontext zur Methode some_cell_range.clearContents( … ) aufgefallen. Dort ist der Höchstwert ja die Summe der 2er-potenzen 2^0 bis 2^9 →→ 1023. Das ist das gleiche wie 2^10 -1 . also habe ich …clearContents( 2**10 -1) benutzt, und wurde belehrt das …clearContents( -1 ) genauso tut.
und überraschenderweise produziert die Calc-Formel =DEZINBIN(-1) analog dazu das Ergebnis "111111111"

Re: Dokument ohne Speichern schließen

Verfasst: So, 07.11.2021 08:08
von Stephan
... nur, dass weder "ThisComponent.close(true)"
nun kann auch ich mich ja irren, weshalb ich extra auf die API verwiesen hatte (Warum liest Du das nicht?), denn es gibt ja die Alternative mit:

Code: Alles auswählen

ThisComponent.close(false)
die, je nach Situation, zwingend sein kann.

(das ich -1 spontan mit True in Verbindung brachte kam daher das mir die Situation von Boolschen WErten in MS Access in den Sinn kam)


außerdem:
Mir selbst sind auch schon Fälle vorgekommen wo ich statt auf .close auf den dispatcher und uno:CloseDoc ausweichen musste. (zumal ja .close die Besonderheit hat beim letzten geöffnet Dokument eben nichzt nur das Dokument zu schliessen, sondern das komplette OO/LO, was bei Verwendung des dispatchers nicht passiert)
noch "ThisComponent.dispose()" funktioniert
??
Hat absolut nichts mit meiner Antwort zu .close zu tun


Gruß
Stephan

Re: Dokument ohne Speichern schließen

Verfasst: So, 07.11.2021 08:15
von Stephan
und wurde belehrt das …clearContents( -1 ) genauso tut
das erinnert mich an Dinge wie .CellBackColor = -1, ist aber wohl doch nicht völlig Daselbe.


Gruß
Stephan