Dokument ohne Speichern schließen

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Dokument ohne Speichern schließen

Beitrag 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?
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Dokument ohne Speichern schließen

Beitrag 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()

LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Dokument ohne Speichern schließen

Beitrag von erikafuchs »

"oNeuDoc" ist eine direkte Kopie aus Thomas` Buch.
dispose() hat den gleichen Effekt - Programmabsturz und Wiederherstellungsoption.
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Dokument ohne Speichern schließen

Beitrag 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.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Dokument ohne Speichern schließen

Beitrag 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.
Zuletzt geändert von erikafuchs am Mi, 03.11.2021 18:07, insgesamt 3-mal geändert.
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Dokument ohne Speichern schließen

Beitrag von Karolus »

Hallo
das 'abbrechen' funktioniert wie vorgesehen… kein Knall kein Rauch sogar die Katze bleibt völlig ruhig 8)
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Dokument ohne Speichern schließen

Beitrag von erikafuchs »

Ist ja prima! AOO oder LO?
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dokument ohne Speichern schließen

Beitrag von F3K Total »

Moin,
eine kleine Beispieldatei, funzt bei mir unter AOO und LO, unter Windows 10 getestet.

Gruß R
Dateianhänge
DateiSchließen.ods
(10.37 KiB) 124-mal heruntergeladen
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Dokument ohne Speichern schließen

Beitrag 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!
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Dokument ohne Speichern schließen

Beitrag 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
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Dokument ohne Speichern schließen

Beitrag von erikafuchs »

... nur, dass weder "ThisComponent.close(true)" noch "ThisComponent.dispose()" funktioniert (ohen Absturz) - "ThisComponent.close -1" aber schon.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dokument ohne Speichern schließen

Beitrag 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
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Dokument ohne Speichern schließen

Beitrag 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"
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Dokument ohne Speichern schließen

Beitrag 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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Dokument ohne Speichern schließen

Beitrag 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
Antworten