4 messages in org.openoffice.fr.progRe: [prog] Macro de changement de casse
FromSent OnAttachments
Erwan SoubenJan 12, 2007 5:22 am 
Bernard MarcellyJan 15, 2007 1:52 am 
Erwan SoubenJan 16, 2007 1:36 am 
Erwan SoubenJan 17, 2007 1:55 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Macro de changement de casseActions...
From:Bernard Marcelly (marc@club-internet.fr)
Date:Jan 15, 2007 1:52:11 am
List:org.openoffice.fr.prog

Bonjour Erwan Souben Message du 2007-01-12 14:22:

Bonjour à tous,

J'ai déposé dans l'espace [doc-fr] un how-to accompagné d'une macro permettant de changer la casse d'un texte. -> http://fr.openoffice.org/servlets/ProjectDocumentList?folderID=260 -> http://fr.openoffice.org/files/documents/67/3867/CasseMajF3.odt

Ton HowTo est très clair et vivant, et il présente un exemple très utile d'installation de macro. Je trouve cependant que les copies d'écran de la page 6 sont trop petites pour lire le HowTo à l'écran. Il faudrait les agrandir (ou passer leur définition de 96dpi à 150dpi).

La macro initiale d'Andrew Brown n'est vraiment pas un modèle de programmation (à l'époque on avait très peu de documentation sur les macros et l'API). Tu as fait des améliorations, mais il reste des maladresses de codage et des commentaires incorrects.

Le codage ne fonctionne que grâce aux conversions automatiques string <-> nombre de Basic. Car la propriété CharCaseMap contient un nombre entier, pas une chaîne de caractères.

Toutes les valeurs de CharCaseMap devraient utiliser les noms qualifiés des constantes API (voir la description IDL dans le SDK). Dans la partie centrale, je te propose ce codage équivalent:

if MonCurseur.CharCaseMap = com.sun.star.style.CaseMap.NONE then MonCurseur.CharCaseMap = com.sun.star.style.CaseMap.LOWERCASE Chaine = Lcase(Chaine) end if

Select Case MonCurseur.CharCaseMap Case com.sun.star.style.CaseMap.UPPERCASE ' le commentaire était incorrect! MonCurseur.CharCaseMap = com.sun.star.style.CaseMap.TITLE ' - suite du codage ... - Case com.sun.star.style.CaseMap.LOWERCASE ' le commentaire était incorrect! ' - suite du codage ... - Case com.sun.star.style.CaseMap.TITLE ' le commentaire était incorrect! ' - suite du codage ... - Case com.sun.star.style.CaseMap.SMALLCAPS ' le commentaire est correct ici ' - suite du codage ... - End Select

Je pense que ta macro devrait remplacer celle actuellement disponible (Writer : 01 - Casse) à la page <http://fr.openoffice.org/Documentation/Macros/indexmac.html>

Bonne journée Bernard