Re: [prog] Changement de comportement dans OOo3.1
Bonsoir, Je pense qu'en codant directement au moyen des API le problème pourrait être solutionné. Je n'ai pas vérifié faute de disposer d'une v3.0.1 sous la main. Voici un bout de code à tester : sub CurrentWordUnderline dim oDoc as object dim oText as object dim oSelection as object dim oCursor as object oDoc=ThisComponent oText = oDoc.Text Cursor = oDoc.currentcontroller.getViewCursor() oSelection = oText.createTextCursorByRange(Cursor.getStart()) oSelection.gotoStartOfWord(false) oSelection.gotoEndOfWord(true) oSelection.CharUnderline = com.sun.star.awt.FontUnderline.SINGLE end sub Avec ma 3.1.0 (officielle) sous Ubuntu 8.10 cela fonctionne et ne présente pas le problème de on/off (bascule). fabs@wanadoo.fr a écrit : > Bonjour, > > Je viens de constater un changement de comportement dans OOo3.1, par rapport > aux versions précédentes, dans l'enregistreur de macro lors du soulignement. > > Jusqu'à présent, pour souligner un texte, j'utilisais la procédure ci-dessous > obtenue avec l'enregistreur de macro: > > sub souligner > dim document as object > dim dispatcher as object > document = ThisComponent.CurrentController.Frame > dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") > dim args1(2) as new com.sun.star.beans.PropertyValue > args1(0).Name = "Underline.Underline" > args1(0).Value = 1 > dispatcher.executeDispatch(document, ".uno:Underline", "", 0, args1()) > end sub > > Maintenant, cette procédure fait passer alternativement du soulignage au non > soulignage. Même comportement que si je mettais n'importe quelle chaîne de > caractères comme nom de l'argument args1(0). > Dans OOo3.1, le nom de l'argument du "dispatcher" doit maintenant être > "Underline.LineStyle". Mon enregistreur de macros me fournit le code suivant : sub Main rem -- rem define variables dim document as object dim dispatcher as object rem -- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") rem -- dim args1(2) as new com.sun.star.beans.PropertyValue args1(0).Name = "Underline.LineStyle" args1(0).Value = 1 args1(1).Name = "Underline.HasColor" args1(1).Value = false args1(2).Name = "Underline.Color" args1(2).Value = -1 dispatcher.executeDispatch(document, ".uno:Underline", "", 0, args1()) end sub > Problème: cet argument n'est pas reconnue dans les versions antérieures de > OOo... > > D'où ma question: il y a-t-il moyen de faire fonctionner cette procédure dans > toutes les versions d'OOo? > > Merci, > > Cordialement, > > Fabien. > Francois Gatto - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Changement de comportement dans OOo3.1
Le Thursday 21 May 2009 22:07:08 Francois Gatto, vous avez écrit : > Bonsoir, > > Je pense qu'en codant directement au moyen des API le problème pourrait > être solutionné. Merci pour le code. Mais je ne sais pas si je vais pouvoir l'adapter si facilement. Ca ne fait pas tout à fait la même chose: le soulignage se fait après coup et il faut savoir combien de mots souligner, ce qui peut être variable dans mon cas (chaîne de caractère définie par l'utilisateur)... En tout cas, merci quand même. > Mon enregistreur de macros me fournit le code suivant : > sub Main > rem -- > rem define variables > dim document as object > dim dispatcher as object > rem -- > rem get access to the document > document = ThisComponent.CurrentController.Frame > dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") > > rem -- > dim args1(2) as new com.sun.star.beans.PropertyValue > args1(0).Name = "Underline.LineStyle" > args1(0).Value = 1 > args1(1).Name = "Underline.HasColor" > args1(1).Value = false > args1(2).Name = "Underline.Color" > args1(2).Value = -1 > > dispatcher.executeDispatch(document, ".uno:Underline", "", 0, args1()) > end sub Le mien aussi. J'ai un peu épuré dans mon mail précédent pour garder ce dont j'avais besoin. Ce qui change entre OOo3.0 et OOo3.1, c'est le nom "Underline.LineStyle" qui était avant "Underline.Underline" Quelqu'un sait-il comment récupérer la version d'OOo par code pour contourner le problème? Fabien. > > Problème: cet argument n'est pas reconnue dans les versions antérieures > > de OOo... > > > > D'où ma question: il y a-t-il moyen de faire fonctionner cette procédure > > dans toutes les versions d'OOo? > > > > Merci, > > > > Cordialement, > > > > Fabien. > > Francois Gatto > > > - > To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org > For additional commands, e-mail: prog-h...@fr.openoffice.org -- Fabien Skraber www.gestionnaire-exos.fr - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Changement de comportement dans OOo3.1
Bonjour, fabs@wanadoo.fr a écrit : > Quelqu'un sait-il comment récupérer la version d'OOo par code pour contourner > le problème? > > Fabien. > > Function OOoNumVersion() As Integer 'Retreives the running OOO version Dim aSettings, aConfigProvider Dim aParams2(0) As new com.sun.star.beans.PropertyValue Dim sProvider$, sAccess$ sProvider = "com.sun.star.configuration.ConfigurationProvider" sAccess = "com.sun.star.configuration.ConfigurationAccess" aConfigProvider = createUnoService(sProvider) aParams2(0).Name = "nodepath" aParams2(0).Value = "/org.openoffice.Setup/Product" aSettings = aConfigProvider.createInstanceWithArguments(sAccess, aParams2()) If aSettings.hasbyname("ooSetupVersionAboutBox") Then sOOOVersion = aSettings.getbyname("ooSetupVersionAboutBox") Else sOOOVersion = aSettings.getbyname("ooSetupVersion") EndIf If Len(sOOOVersion) = 3 Then sOOOVersion = sOOOVersion & ".0" OOoNumVersion = Cint(Mid(sOOOVersion,1,1))*100 + Cint(Mid(sOOOVersion,3,1))*10 + Cint(Mid(sOOOVersion,5,1)) End Function Cette fonction peut convenir. -- Didier Dorange-Pattoret http://www.dmaths.org http://sesamath.net Soutenez le projet Dmaths : rejoignez le club ou faites adhérer votre établissement ! http://www.dmaths.org/documentation/doku.php?id=presentation:club
Re: [prog] Changement de comportement dans OOo3.1
Bonjour, Notons que le code initial est de Laurent Godard [2004] (Merci Laurent) http://codesnippets.services.openoffice.org/Office/Office.Version.snip Également disponible sur : http://www.oooforum.org/forum/viewtopic.phtml?t=10003 ainsi que le document de Andrew Pitonyak (gratuit) : http://www.pitonyak.org/AndrewMacro.odt Francois Gatto Didier Dorange-Pattoret a écrit : > Bonjour, > > fabs@wanadoo.fr a écrit : >> Quelqu'un sait-il comment récupérer la version d'OOo par code pour >> contourner >> le problème? >> >> Fabien. >> >> > Function OOoNumVersion() As Integer > 'Retreives the running OOO version > Dim aSettings, aConfigProvider > Dim aParams2(0) As new com.sun.star.beans.PropertyValue > Dim sProvider$, sAccess$ > sProvider = "com.sun.star.configuration.ConfigurationProvider" > sAccess = "com.sun.star.configuration.ConfigurationAccess" > aConfigProvider = createUnoService(sProvider) > aParams2(0).Name = "nodepath" > aParams2(0).Value = "/org.openoffice.Setup/Product" > aSettings = aConfigProvider.createInstanceWithArguments(sAccess, > aParams2()) > If aSettings.hasbyname("ooSetupVersionAboutBox") Then > sOOOVersion = aSettings.getbyname("ooSetupVersionAboutBox") > Else > sOOOVersion = aSettings.getbyname("ooSetupVersion") > EndIf > If Len(sOOOVersion) = 3 Then sOOOVersion = sOOOVersion & ".0" > OOoNumVersion = Cint(Mid(sOOOVersion,1,1))*100 + > Cint(Mid(sOOOVersion,3,1))*10 + Cint(Mid(sOOOVersion,5,1)) > End Function > > Cette fonction peut convenir. > > - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Changement de comportement dans OOo3.1
Merci pour les réponses. > Notons que le code initial est de Laurent Godard [2004] (Merci Laurent) Je le noterai dans mon code. -- Fabien Skraber www.gestionnaire-exos.fr - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Changement de comportement dans OOo3.1
Bonjour merci francois ;) à noter que depuis quelques temps (OOo 2.x iirc), on peut utiliser egalement "ooSetupVersionAboutBox" qui donne la version complete sur 3 chiffres HTH Laurent function getVersionOOO() as string 'recupère version de OOo dim aSettings aSettings = getConfigSetting("/org.openoffice.Setup/Product", false) getVersionOOO=aSettings.getbyname("ooSetupVersionAboutBox") end function function getConfigSetting(target as string, forUpdate as boolean) ' retourne le noeud de config demandé ' exemple: aSettings = getConfigSetting( "/org.openoffice.Office.Common/Path/Current", false) dim service as String ' nom du service d'acces à la configuration dim aSettings, aConfigProvider dim aParams(0) As new com.sun.star.beans.PropertyValue if forUpdate then service = "com.sun.star.configuration.ConfigurationUpdateAccess" else service = "com.sun.star.configuration.ConfigurationAccess" endif aConfigProvider = createUnoService( "com.sun.star.configuration.ConfigurationProvider" ) aParams(0).Name = "nodepath" aParams(0).Value = target aSettings = aConfigProvider.createInstanceWithArguments(service, aParams() ) getConfigSetting = aSettings end function - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org