Le Tuesday 01 July 2008 11:36:12 Christophe Devalland, vous avez écrit :
> Bonjour,
>
> désolé pour ce message un peu technique.
> J'ai créé une extension CmathOOo et participé au projet Dmaths.
> Depuis la version 2.3.1, la fonctionnalité qui nous permet d'insérer une
> formule est buguée (j'ai ouvert l'issue
> http://www.openoffice.org/issues/show_bug.cgi?id=67283 qui n'en finit pas
> d'être résolue mais qui ne l'est jamais). La formule n'est pas
> redimensionnée ce qui fait qu'elle apparaît dans une boite minuscule (voir
> le code basic dans l'issue).
> Si on clique deux fois dessus, elle prend sa taille normale.
> Ma question : Peut-on simuler ce double clic en OOoBasic ?

Bonjour,

Je te recopie une réponse que j'avais proposée dans le forum user sur ton 
problème:

J'ai écrit une petite macro qui parcours toutes formules et les réenregistre. 
Ca évite de les éditer toutes à la main.
Je te donne le code ci-dessous:

Sub ParcoursFormules
        dim i as integer
        dim LesObjets as Object
        dim Objet as Object
        LesObjets=ThisComponent.getEmbeddedObjects
        On error goto erreur
        for i=0 to LesObjets.count-1
                Objet=LesObjets(i)
                if Objet.getImplementationName="SwXTextEmbeddedObject" then
                        if 
Objet.embeddedObject.getImplementationName="com.sun.star.comp.math.FormulaDocument"
 
then
                                Objet.embeddedObject.setmodified(true)
                        endif
                endif
        next i
        erreur:
        resume next
end sub

Il faut juste être patient. Chez moi, le programme a modifié toutes les 
formules en à peu près 1mn40. On peut améliorer en parcourant tous les 
documents d'un répertoire, s'il y a beaucoup de fichiers a modifier.
Pour l'écriture de la macro, je me suis inspiré d'une macro de Laurent Godard 
qui permet de modifier les tailles des formules.

J'espère que ça va aider à résoudre le problème, à défaut de le comprendre...

Fabien.


> Merci de vos idées.
>
> Pour info voici le code qui insère la formule :
>
> Sub InsereFormule(oViewCursor as Object, oTextCursor as Object, sPolice as
> String, iTaille as Integer, sFormule as String, bModeTexte as boolean)
>     dim obj as object
>    
> obj=ThisComponent.CreateInstance("com.sun.star.text.TextEmbeddedObject")
> obj.CLSID="078B7ABA-54FC-457F-8551-6147e776a997"
>     obj.AnchorType=com.sun.star.text.TextContentAnchorType.AS_CHARACTER
>     ThisComponent.getCurrentController().select(oTextCursor)
>     oTextCursor.Text.insertTextContent(oTextCursor, obj, true)
>       obj.EmbeddedObject.BaseFontHeight=iTaille
>       obj.EmbeddedObject.FontNameVariables=sPolice
>       obj.EmbeddedObject.FontVariablesIsItalic=true
>        obj.EmbeddedObject.FontNameNumbers=sPolice
>       obj.EmbeddedObject.FontNameText=sPolice
>       obj.EmbeddedObject.FontNameFunctions=sPolice
>       obj.EmbeddedObject.IsScaleAllBrackets=True
>       obj.EmbeddedObject.RelativeIndexSubscript=0
>       obj.EmbeddedObject.RelativeIndexSuperscript=0
>        obj.EmbeddedObject.LeftMargin=30
>      obj.EmbeddedObject.RightMargin=30
>     obj.EmbeddedObject.RelativeSpacing=20
>       obj.EmbeddedObject.IsTextMode=bModeTexte
>       obj.EmbeddedObject.formula=sFormule
>       obj.EmbeddedObject.setmodified(TRUE)
>        obj.LeftMargin=0
>       obj.RightMargin=0
>       oViewCursor.goLeft(1,False)
>       oViewCursor.goRight(1,False)
> end sub




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à