Bonjour Bernard,
Merci pour cette réponse qui me confirme qu'il doit y avoir comme une
bogue ou une "limitation" ;-) dans la façon dont sont gérés les scripts
_embeded_ autres que StarBasic.
Il semble que les choses ne se passent pas dans le bon ordre lors de
l'ouverture du document, comme si le calcul de la feuille était lancé
avant que l'on ait accès aux scripts javascript (apparemment, même
problème avec Phyton http://www.oooforum.org/forum/viewtopic.phtml?t=23310)
J'ai essayé de trouver une issue sur le sujet, mais sans succés.
Dans mon appli, les javascripts doivent être "embarqués" dans le
document, je vais donc essayer de relancer automatiquement le recalcul
des feuilles après l'ouverture en ayant vérifié que l'accès aux scripts
js est possible.
D'autre part, merci de m'avoir fait remarquer le "return", c'est vrai
que c'est plus simple lorsque l'on a qu'une seule valeur à retourner. Je
testerai pour voir si on y gagne au chrono.
J'ai jeté un oeil dans l'api et je viens de comprendre comment on
paramètre l'interfaçage avec le script.
http://api.openoffice.org/docs/common/ref/com/sun/star/script/provider/XScript.html
Je n'ai pas compris comment on peut faire la différence entre les IN et
les IN_OUT en javascript à part à la lecture du script !
Encore merci et bon week end
Bob
Bernard Marcelly a écrit :
Bonjour,
Message de Bob date 2007-11-08 19:55 :
Le problème sur lequel je bloque maintenant est :
*Comment charger la librairie Javascript automaiquement ?*
En fait, le problème n'est pas lié au chargement de la librairie
javascript. Le problème ne se produit qu'au chargement du document !
Je pense que ce doit être une limitation de l'implémentation actuelle
des scripts. Par contre on peut appeler (via Basic) une fonction
JavaScript de "Mes macros".
Le renvoi d'une valeur par une fonction JavaScript est d'ailleurs plus
simple que ton exemple. On récupère la dernière valeur évaluée par la
fonction !
Voici une fonction JavaScript renvoyant le produit du premier argument
avec un nombre aléatoire entre 0 et 1. Une seule ligne suffit:
ARGUMENTS[0]*Math.random();
Créons cette fonction sous le nom de zozo dans la bibliothèque
Javascript BibliEssai créée dans Mes macros.
La fonction Basic intermédiaire s'appellera versZozo :
Function versZozo(s as Double) as Double
Dim oDocScriptProvider as Object
Dim monScript as Object, mspf as object
oDocScriptProvider = ThisComponent.getScriptProvider()
monScript =
oDocScriptProvider.getScript("vnd.sun.star.script:BibliEssai.zozo.js?language=JavaScript&location=user")
versZozo = monScript.Invoke(Array(s), Array(1), Array())
End Function
Il ne reste plus qu'à l'appeler dans une cellule, par exemple:
=VERSZOZO(5)
formater la cellule avec plusieurs décimales pour voir le résultat.
Je ferme complètement le document et OpenOffice. A chaque réouverture
du document la cellule contient une nouvelle valeur, donc la fonction
est bien appelée, sans erreur.
______
Bernard
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]