Message de Romain Pelisse  date 2009-01-30 19:45 :
Bonjour,

J'ai utilisé sans problème, à l'aide de la documentation en ligne, le
ReplaceDescriptor pour remplacer un terme dans l'ensemble de mon document
Writer. Maintenant, je souhaiterais pouvoir limiter ce remplacement à la
sélection en cours de l'utilisateur.

Je pensais simplement faire ainsi

    Doc = StarDesktop.CurrentComponent.CurrentSelection
    If IsNull(Doc) Then ' pas de sélection, on remplace tout
        Replace = StarDesktop.CurrentComponent.createReplaceDescriptor
    Else ' une sélection on remplace dedans
        Replace = Doc.createReplaceDescriptor
    End If

... mais ça ne marche pas. Le plus étrange c'est que , au debug, on s'arrête
sur la création du Descriptor, sans message d'erreur.

La méthode createReplaceDescriptor est seulement exposée par le document. Pas par CurrentSelection qui est un conteneur de sélections, ni par une sélection. Facile à voir avec Xray.

Bref, comment puis je construire une 'ReplaceDescriptor' à partir d'un
'TextRange' tel que celui que me retourne la méthode 'CurrentSelection'  ?

Je ne pense pas que la méthode replaceAll puisse être limitée à une zone.
Tu devrais t'inspirer de ce qui est expliqué dans le livre Programmation OpenOffice.org 2 à "Limiter le champ de recherche" et "Rechercher pour remplacer" en utilisant le TextRange de la sélection, et les méthodes findNext, compareRegionEnds.

   Bernard

---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org

Répondre à