

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
3 messages in org.openoffice.fr.progRe: [prog] Au sujet du module math| From | Sent On | Attachments |
|---|---|---|
| Christophe Devalland | Jul 1, 2008 12:35 am | |
| fabs...@wanadoo.fr | Jul 12, 2008 12:46 am | |
| Christophe Devalland | Aug 17, 2008 5:38 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] Au sujet du module math | Actions... |
|---|---|---|
| From: | fabs...@wanadoo.fr (fabs...@wanadoo.fr) | |
| Date: | Jul 12, 2008 12:46:18 am | |
| List: | org.openoffice.fr.prog | |
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







