Dokumentenwiederherstellung

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

Moderator: Moderatoren

DITA
***
Beiträge: 91
Registriert: Fr, 16.11.2012 16:23

Dokumentenwiederherstellung

Beitrag von DITA »

Hallo Leute,

brauche mal wieder eure geschätzte Hilfe.

Habe aus dem www (meine aus diesem Forum) einen Code zum verhindern, dass man einen Dialog mit dem X-Button oben rechts schliessen kann (funktioniert soweit)
super wäre zwar wenn der Anwender bei jedem x-drücken ne Mitteilung erhalten würde, aber.....

Habe mir dann einen Button gebaut um diese Dialogbox (nachher mit korrektem Passwort) zu schliessen, was nur bedingt funktioniert, bzw. wo ich einen ]Fehler vermute. Habe dieses Dialog.dispose mal geremmt, aber dann kann ich die Dialogbox nicht mehr schliessen.

Schließe ich nun komplett die Tabelle erscheint sofort das Fenster Dokumentenwiederherstellung, es steht aber keine Datei drin.

hänge die Datei mal an, vielleicht weiss jemand wo der Fehler steckt - danke
unschliessbarer_Dialog.ods
(11.21 KiB) 113-mal heruntergeladen
Gruss Dirk
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Dokumentenwiederherstellung

Beitrag von Stephan »

Deine Beispieldatei enthält leider nicht was der Text verspricht, denn weder ist dort eine Funktion enthalten die das Schließen über das [x] blockiert, noch ist Dialog.dispose auskommentiert.
Auch erscheint bei mir nicht das Fenster Dokumentwiederherstellung wenn ich das Dokument schließe.


Gruß
Stephan
DITA
***
Beiträge: 91
Registriert: Fr, 16.11.2012 16:23

Re: Dokumentenwiederherstellung

Beitrag von DITA »

Hallo Stephan,

sorry dass ich mich erst heute melde, war gesundheitlich etwas außer Kraft gesetzt.

Vielleicht hab ich mich falsch ausgedrückt, ich hatte probehalber das dispose geremmt, aber da ich den Dialog dann gar nicht mehr schließen konnte wieder eingebaut, hatte mal gelesen, dass es bei einigen Systemen zu Problemen führt. Mittlerweile glaube ich aber nicht mehr das da das Problem liegt.

Das zweite was vielleicht falsch verstanden wurde ist, dass das "gebastelte" Basic nur verhindern soll den Dialog mit [x] zu beenden, nicht die ganze Tabelle (Wenn das ginge, wäre ich für nen Schubs in die Richtung auch dankbar).
Der beschriebene Fehler tritt allerdings bei mir erst auf wenn ich nachdem ich mit der Dialogbox "gespielt" habe, sie über den Button geschlossen wurde und dann die gesamte Datei schließe ( mit dem [x] oben rechts )

Danke

Gruß Dirk
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Dokumentenwiederherstellung

Beitrag von Toxitom »

Hey Dirk,

sorry, der Code ist in sich völlig inkonsistent. Weisst Du eigentlich, was Du das programmierst?

Code: Alles auswählen

u_dialog.setVisible(True) 
Diese Zeile setzt Deinen Dialog "visible" - und zwar im Vordergrund, ohne dass der Programmcode gestoppt wird. Die weiteren Zeilen laufen nun also "normal" weiter.
Es folgt eine "unendliche Schleife" ohne Ende-bedingung.

Code: Alles auswählen

	beenden = 0
	Do While beenden = 0
		Wait 10
	Loop
Da Du der Variablen "beenden" nie einen anderen Wert zuweist, wird dieser Codeblock nie verlassen - Klassischer Programmierfehler.

Dein Makro für den Schalter nutzt die Methode .endexecute(), die nur dann Sinn macht, wenn Du den Dialog mit .execute() ausgeführt hast. Hast Du aber nicht.
Dass Du das Objekt des Dialoges dann mit ".dispose()" auch noch endgültig zerstörst, macht den Code weder besser noch konsitenter. Deine Endlosschleife läuft immer noch - und ist nicht mehr stoppbar. Dass dies zum Programm-Absturz führt, ist eigentlich logisch.

Fang mit den Grundlagen der API Programmierung an - und arbeite Dich dann vor. Das Einfache Kopieren von Code ohne HIntergrundwisssen ist immer sehr gefährlich.

VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten