Bonjour Galiacy Sébastien
Message du 2005-07-22 14:37:
Toutes les macro sont dans le document
Et la macro lier au bouton est assez simple
MonDocument = ThisComponent
'on Error Resume Next
'MonDocument.Close(True)
'On Error GoTo 0
'MonDocument.setModified(false)
stardesktop.terminate()
La je viens d'essayer celle ci, je n'ai plus le message du fichier
modifié et ca ferme bien le document, mais ca plante OOo et j'ai droit
au rapport de bug
Petites remarques : ton code ne ferme pas le document puisque les
instructions sont en commentaires ;) de plus il faut faire
setModified(false) avant de fermer le document, pas après.
Je viens de relire un grand nombre de messages anglais autour de
StarDesktop.terminate(). Typiquement, un intervenant dit qu'on doit
l'employer pour fermer soffice, un autre se plaint qu'il a un message
d'erreur et rapport de bug automatique.
Je pense que c'est une bogue d'OpenOffice.org (qui persiste sur
1.9.113), probablement dûe à ce qu'on se trouve dans une situation
bizarre : on vient de fermer le dernier document, mais on continue la
macro qui a été lancée depuis ce document. OOo chercher sans doute une
référence qui n'existe plus.
Après avoir constaté ce problème sur un document minimal, j'ai mis dans
le conteneur soffice une macro qui ne fait que StarDesktop.terminate().
Je ferme tous les documents en laissant la fenêtre OOo. Cette macro est
encore accessible. Si je la lance maintenant, OOo se termine bien (plus
de processus soffice), et sans erreur.
En conclusion, StarDesktop.terminate() ne marche pas s'il est exécuté
depuis une macro lancée par un document. Il marche depuis une macro
lancée "en résident".
Alors que faire ? Sous Win XP, je constate que si je me contente de
fermer le document par macro _sans_ utiliser StarDesktop.terminate() la
fenêtre se ferme, mais il reste un processus soffice.
Si je relance OOo en rouvrant le document, il y a encore un seul
processus soffice.
Si je ferme le document par la macro, la fenêtre se ferme et il y a
toujours un processus soffice en cours.
Donc on ne perd pas plus de mémoire, alors autant laisser courir, 37Mo
de RAM c'est plus rien de nos jours.
Remarque : tout ceci à condition qu'on n'emploie pas le Démarrage rapide
d'OOo. Il est impossible de fermer OOo s'il y a le démarrage rapide.
Bonne journée
Bernard
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]