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
Gruss Dirk
Dokumentenwiederherstellung
Moderator: Moderatoren
Re: Dokumentenwiederherstellung
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
Auch erscheint bei mir nicht das Fenster Dokumentwiederherstellung wenn ich das Dokument schließe.
Gruß
Stephan
Re: Dokumentenwiederherstellung
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
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
Re: Dokumentenwiederherstellung
Hey Dirk,
sorry, der Code ist in sich völlig inkonsistent. Weisst Du eigentlich, was Du das programmierst?
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.
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
sorry, der Code ist in sich völlig inkonsistent. Weisst Du eigentlich, was Du das programmierst?
Code: Alles auswählen
u_dialog.setVisible(True)
Es folgt eine "unendliche Schleife" ohne Ende-bedingung.
Code: Alles auswählen
beenden = 0
Do While beenden = 0
Wait 10
Loop
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
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic