Bonjour Christophe,

J'ai fait le même constat.

Pour ce qui est de Dmaths, nous utilisons le dispatcher pour insérer une formule et cela fonctionne bien.

Voici un bout de code à appliquer à la source d'un texte sélectionné.
Exemple : {1} over {2} est sélectionné.

     oDesktop = createUnoService("com.sun.star.frame.Desktop")
     document= oDesktop.getCurrentComponent().getCurrentController()
     dim Array(0) as new com.sun.star.beans.PropertyValue
     dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     dispatcher.executeDispatch(document, ".uno:InsertObjectStarMath", "", 0, Array())

     
     TheFormule=oDesktop.getCurrentComponent().getCurrentSelection()
    rem permet d'accéder aux propriétés de la formule.


        dispatcher.executeDispatch(document, ".uno:Escape", "", 0, Array())
        dispatcher.executeDispatch(document, ".uno:ResetAttributes", "", 0, Array())
       rem permet de déselectionner la formule.


 


Christophe Devalland a écrit :
Bonjour,

j'ai écrit un programme utilisé par de nombreux professeurs pour taper très rapidement des expressions mathématiques avec OOo 1.1.x. sans avoir à ouvrir l'éditeur d'expressions mathématiques (voir http://cdeval.free.fr/article.php3?id_article=83 pour des détails)

Aujourd'hui j'ai un soucis pour migrer vers la version OOo 2.0.x

Pour simplifier les explications, voici un code qui crée dans le texte la fraction 1/2. Ce code fonctionne parfaitement avec OOo 1.1.x.

Sub Main
    oViewCursor = ThisComponent.getCurrentController().getViewCursor()
    oTextCursor=oViewCursor.Text.createTextCursorByRange(oViewCursor)
    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.formula="{1}over{2}"
End Sub

Les dimensions du cadre entourant l'_expression_ mathématique augmentent dès que l'instruction " obj.EmbeddedObject.formula="{1}over{2}" " est rencontrée.

Avec OOo 2.0.x, le même code insère bien la fraction mais ne modifie pas la taille du cadre si bien que je me retrouve avec une fraction minuscule. Il suffit de double cliquer dessus, le module "math" s'ouvre et elle prend alors les bonnes dimensions.
Cela ressemble bien à un bug.
Quelqu'un aurait-il une idée pour contourner cela : un autre moyen de taper une formule sans passer par le module math, ou bien une instruction qui permettrait de forcer le redimensionnement de ce cadre ? (je précise que l'instruction "obj.EmbeddedObject.setmodified(TRUE)" ne change rien au problème)
Merci d'avance pour vos idées.

-- 
Didier Dorange-Pattoret

http://www.dmaths.org
http://sesamath.net

S'inscrire à la liste de diffusion de dmaths: [EMAIL PROTECTED]
Ses archives: http://listes.dmaths.org/wws/arc/users
Les Forums: http://www.dmaths.org/modules.php?name=Forums
Mailing List in english: http://www.dmaths.org/modules.php?name=Content&pa=showpage&pid=9

Le livre de référence pour OpenOffice.org2 : http://www.amazon.fr/exec/obidos/ASIN/2212116381/dmaths-21
Programmation OpenOffice.org2 : http://www.amazon.fr/exec/obidos/ASIN/2212117639/dmaths-21

Répondre à