Sechaud
Messages postés288Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention 3 janvier 2017
-
11 nov. 2006 à 19:31
Sechaud
Messages postés288Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention 3 janvier 2017
-
20 nov. 2006 à 18:15
Je n'arrive toujours pas à résoudre le problème de perte de coloration
en RTF dans mon programme, lors de la numérotation des lignes.
http://www.vbfrance.com/codes/JPNFODIZ-EDITEUR-TEXTE-MIXTE_40142.aspx Pour essayer de trouver une solution, j'ai travaillé en externe -->
'Conditions de test
'2 RichTextBox et 2 boutons
'Un coller de RTF avec couleurs en RTF1
Dim Tbl(10)
'LA COULEUR EST RETROUVEE EN RICHTEXRBOX2
Private Sub Command1_Click()
Tbl(0) = RTF1.TextRTF
RTF2.TextRTF = ""
RTF2.TextRTF = Tbl(0)
End Sub
'---------------------------------------------------
'APRES DECOUPE LA COULEUR EST ABSENTE
Private Sub Command1_Click()
Dim R
Dim I As Integer
Dim B As Integer
'Découpage de RTF1 en prenant RTF1.TextRTF pour garder le RTF
R = Split(RTF1.TextRTF, Chr(13) & Chr(10))
'Remplissage du Buffer
For I = 0 To 5
Tbl(I) = R(I)
Next I
'Affichage dans le RichTextBox2 MAIS avec RTF2.Text --->
RTF2.Text = ""
For B = 0 To 5
RTF2.Text = RTF2.Text & Format(B + 1, "000") & " " & Tbl(B) & vbCrLf
RTF2.SetFocus
Next B
' LES LIGNES APPARAISSENT mais ONT DES INFOS 'Style
'004 \par \cf0\b0\fs20 Exemple
'005 \par \cf2\b *****************************
'006 \par \cf0\b0 \cf3\b REMPLIR
'ET n'ont pas de couleur.
'SI ON MET RTF2.TextRTF au lieu de RTF2.Text
'----> Pas d'affichage
End Sub
Qui a connu ce problème et comment le résoudre?
Merci.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 nov. 2006 à 04:11
Salut
Il faut bien comprendre la différence entre .Text et .TextRTF :
.Text : C'est du texte brut, sans couleur
.TextRTF : C'est du texte avec les attributs (couleurs, italique, gras ...)
C'est du texte quand même, mais avec des balises RTF
Dans le dernier exemple que tu donnes, tu colles du texte pris au format RTF (.TextRTF) et tu l'affiches sans interprétation (.Text). C'est donc normal de retrouver du texte "bizarre" et sans couleur.
Ensuite, pour écrire tu texte dans une RTB (comme ta numérotation), il faut utiliser les syntaxes associées au travail avec les chaines de caratères : Toutes les méthodes qui commencent par ".Sel" :
Méthode standard :
With monRTB
.SelStart = x ' La position du curceur où insérer (le 1er caractère est à la position 0)
.SelColor = vbRed ' Un des attribut du texte
.SelLenght = Len("Le texte à insérer")
.SelText = "Le texte à insérer"
End With
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on
Sechaud
Messages postés288Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention 3 janvier 2017 12 nov. 2006 à 07:50
Je vous remercie tous bien, pour vos réponses mais pour moi le problème reste:
_PCPT tu me dis que le problème semble résolu dans ta source mais
tu ne dis pas laquelle.
_JACK ce que tu m'as expliqué très clairement, je le savais et je te prie de croire que j'ai essayé avec toutes les possibilités ---> Text, TextRTF, SelText , SelRTF .... et j'ai essayé de tout sélectionner avant le découpage, sans résultat.Et je te dis que des sources d'éditeurs j'en ai chargé.
Ce qui m'intrigue beaucoup, c'est le non affichage quand je mets
RTF2.TextRTF ou même RTF2.SelRTF.
Avez-vous essayé avec mon exemple de test?
JACK, j'ai tenté ta méthode avec sélection préalable du texte ------->
'Découpage de RTF1
R = Split(RTF1.SelRTF, Chr(13) & Chr(10))
'Remplissage du Buffer
For I = 0 To 2
Tbl(I) = R(I)
Next I
For B = 0 To 2
With RTF2
.SelStart = 0 ' La position du curseur où insérer (le 1er caractère )
.SelColor = vbRed ' Un des attributs du texte
.SelLength = Len(RTF2.TextRTF) .SelText RTF2.TextRTF RTF2.TextRTF & Format(B + 1, "000") & " " & Tbl(B) & vbCrLf
End With
Next B
Résultat: Dans RTF2 on lit Faux ,point final.
Merci encore pour m'avoir fourni des pistes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 12 nov. 2006 à 10:23
mis à part qu'en cliquant sur mon pseudo tu aurais vu la liste de mes sources, le mot "[codes/RICHTEXTBOX-AVANCEE-AJOUTEZ-FACILEMENT-LIGNE-COULEUR-APPLIQUEZ-IMAGE_36551.aspx ma source]" est un lien
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 12 nov. 2006 à 10:37
Je vais mettre mon grain de sel
Sechaud, ce qui me choque c'est ceci :
'Découpage de RTF1 en prenant RTF1.TextRTF pour garder le RTF
R = Split(RTF1.TextRTF, Chr(13) & Chr(10))
Tu découpe ton texte selon les sauts de lignes sans tenir compte du format RTF. Le code RTF fonctionne un peu à l'image du html ou du xml, à l'aide de balises
En découpant uniquement sur les sauts de lignes, tu ne tiens pas comptent des balises rtf qui peuvent se retrouver découper en morceaux dans ce cas là.
Un saut de ligne peut se rencontrer dans une portion de texte formatée RTF. Le second morceau aura perdu sa balise de formatage, donc il n'aura plus aucun format (couleur, ici). Et si la balise utilisée necessite d'etre fermée, dans le premier morceau de texte, il n'y aura plus la balise fermante, donc le format ne sera pas reconnu non plus.
Ce qui expliquerait les caractères indésirables rencontrées, puisque non reconnue, les balises sont interpretées comme du simple texte.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Sechaud
Messages postés288Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention 3 janvier 2017 20 nov. 2006 à 18:15
Comme d'habitude Jack avait trouvé la bonne piste.
Je le remercie à nouveau.
J'ai modifié mon découpage pour extraire la position des débuts de li'################################################
'DECOUPER DOCUMENT LIGNE PAR LIGNE
'################################################
Public Function Decoupage() '
On Error GoTo Probleme
Dim E As Integer
Dim I As Integer
Dim R
'RAZ du Buffer
For E = 0 To 800
Tbl3(E) = ""
Next E
'Recopier RTF1 ligne par ligne dans le Buffer Tbl3()
R = Split(RTF1.Text, Chr(13) & Chr(10))
'Remplissage du Buffer
For I = 0 To Val(Label1.Caption) - 1
Tbl3(I) = R(I)
Next I
List1.Clear
Dim F As Integer 'Position des débuts de lignes
F = 0
'Si on veut le n° de ligne, son début sa longueur
' List1.AddItem 1 & " " & F & " " & Len(Tbl3(0))
List1.AddItem 0 '0 pour la Position du début du texte
'On capture les autres positions
For I = 1 To Val(Label1.Caption) - 1
F = F + Len(Tbl3(I - 1)) + 2
' List1.AddItem I & " " & F & " " & Len(Tbl3(I))
List1.AddItem F
Next I
Probleme:
End Function
Private Sub CmdNumerote_Click()
Dim B As Integer
For B = 0 To Val(Label1.Caption) - 1
With RTF1
.SelStart = List1.List(B)
.SelText = Format(B + 1, "000") & " "
.Span vbCr, True, True
.SelLength = 0
End With
Next B
End Sub