Page 1 sur 1

Insérer du texte au début d'un TextRich

MessagePublié: 31 Jan 2008 à 12:00
par Sylvain
Bonjour,
Petite astuce pour insérer du texte au début d'un NotesRichTextItem contenant déja des informations.
En cherchant dans la doc, on trouve les méthodes BeginInsert et EndInsert pour se positionner avant un élément précis. Dans ce cas il faut connaitre le type de l'élément (attachment, texte ...).

Quand on ne connait pas le type, le mieux c'est de recréer un nouveau RichTextItem (newItem), d'y mettre son texte puis d'y ajouter le RichTextItem existant (oldItem). Ainsi votre texte se trouve avant. Ensuite il faut supprimer l'item de départ (oldItem) puis le re-créer avec le contenu du nouvel Item (newItem) contenant les informations dans l'ordre.

Petit exemple pratique. Lorsqu'on créer une réponse à un mail avec historique et que l'on souhaite insérer du texte dans la réponse juste au dessus de l'ancien message :

Code : Tout sélectionner
   Set docMail = doc.CreateReplyMessage(False)
   docMail.To = "toto@tata.fr"

   ' On récupere le contenu du mail de réponse, contenant l'ancien message (historique)
   Set rt = docMail.GetFirstItem("Body")
   
   ' On créer notre nouvel item temporaire
   Set rtNew = New NotesRichTextItem(docMail, "Body2")

   ' On y ajoute le texte
   rtNew.AppendText("Message de réponse automatique ...blablabla ...")
   rtNew.AddNewLine(3)

   ' puis on y ajoute l'ancien item contenant l'historique du mail précédent
   Call rtNew.AppendRTItem(rt)
   
   ' On re-créer l'item body avec le contenu du mail a envoyer (notre texte + l'historique en dessous)
   Call rt.remove()
   Set rt = New NotesrichTextItem(docMail, "Body")
   Call rt.AppendRTItem(rtNew)

   ' On supprime l'item créé temporairement
   Call rtNew.remove()

   ' ...et on envoie
   call docMail.send(true)


Cordialement,
::Sylvain::