3 messages in org.openoffice.fr.progRe: [prog] CurrentComponent dans une ...
FromSent OnAttachments
Philippe AllartMay 21, 2007 1:41 am 
Bernard MarcellyMay 21, 2007 3:10 am 
Philippe AllartMay 21, 2007 4:17 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] CurrentComponent dans une macro lancée à l'ouvertureActions...
From:Philippe Allart (pall@cudl-lille.fr)
Date:May 21, 2007 4:17:59 am
List:org.openoffice.fr.prog

Bernard Marcelly a écrit :

Bonjour Philippe,

Bonjour Bernard,

Je pense que la macro X est dans "Mes Macros". Si la macro X est dans le document thisComponent devrait renvoyer toujours ce document.

La macro X est effectivement dans "Mes macros". j'avais oublié de le préciser.

Eventuellement, mettre dans le document une macro W qui appelle la macro X de "Mes Macros".

J'avais vu ça dans un forum. Mais j'essaie d'éviter de mettre des macros dans les documents, pour pouvoir choisir des options de sécurité plus restrictives. L'alternative serait de signer les macros, mais alors il faut déployer des certificats. C'est un autre problème.

D'autre part il vaut mieux utiliser une variable intermédiaire: monDoc = thisComponent plutôt que de réutiliser thisComponent à chaque fois. En effet thisComponent est une fonction Basic, pas un objet fixe.

Oui. C'est pourquoi, sur quelques 3000 lignes de code, je n'utilise qu'une seule fois thisDocument. Je l'ai remplacé ce matin par la séquence suivante, que je vais tester quelques jours:

leDoc = StarDesktop.CurrentComponent if leDoc.implementationName = "com.sun.star.comp.basic.BasicIDE" then documentCourant = thisComponent else documentCourant = leDoc end if

La question c'est quand appeler cette séquence de manière à être certain que documentCourant contient le document en cours de création.

la msgBox est verrouillée, et donc Y stoppée, jusqu'à ce que le macro X soit terminée.

Etreinte mortelle... Rien n'est prévu dans Basic pour les exécutions simultanées de macros. Cela peut engendrer des problèmes, comme ici.

En fait j'ai placé un msgBox en travaillant sur un autre bug dont je vais peut-être devoir parler ici. Il suffit de l'éviter pour que la séquence ci-dessus fonctionne correctement.

Amicalement,

Ph.