cs_nihaoma
Messages postés140Date d'inscriptionjeudi 2 mai 2002StatutMembreDernière intervention 2 février 2010
-
25 juil. 2005 à 16:18
cs_nihaoma
Messages postés140Date d'inscriptionjeudi 2 mai 2002StatutMembreDernière intervention 2 février 2010
-
26 juil. 2005 à 09:37
Bonjour à tous,
voila mon probleme:
j'essais d'analyser le contenu d'un RTB afin d'une part d'en retrouver les retour à la ligne et d'autre part, d'extraire les couleurs du text.
POur une raison que je ne connais pas, un "retour chariot" sur un RTB s'écrit CHR(13) suivit d'un CHR(10) (il me semblait qu'un retour chariot dans un text box était seulement un CHR(13) !) or, comme j'analyse mon texte caractère par caractère, afin de pouvoir détecter mes retours chariot, juste avant ma boucle d'analyse, je remplace tous les CHR(13) & CHR(10) par juste un CHR(13) (ce qui visuelement ne change rien) ensuite il ne me reste qu'a tester à chaque caractère si je ne suis pas sur un CHR(13). Ca ca fonctionne très bien, le soucis, c'est que lorsque j'ajoute ma ligne de remplacement, pour une raison que je ne connais pas, toutes les couleurs de mon RTB sont effacées et tout est remit en noir. Visiblement, la fonction Replace(), scanne aussi caractère par caractères pour retrouver la chaine entrée en paramètres, et "oublie" de remetre la bonne couleur après son passage.....
savez vous comment contourner ce problème svp ??
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 juil. 2005 à 18:41
Salut
Les retours à la ligne sont en effet des vbCrLf = 13+10
Pour les couleurs, tout dépend comment tu t'y prend.
Si tu fais RTB.Text = Replace(RTB.Text, "a", "b"), tu traites le contenu du RTB comme un texte brut : normal que tous les attributs disparaissent.
Il faut utiliser les attributs du RTB :
RTB.SelStart, RTB.SelLength, RTB.SelText et RTB.RTFText
Exemple : Pour récupérer la couleur d'un caractère :
RTB.SelStart = laPositionDuCaractèreDansLeTexte
RTB.SelLength = 1
Couleur = RTB.SelColor
Rappel : les caractères dans un RTB sont numérotés à partir de 0, pas de 1
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je
cs_nihaoma
Messages postés140Date d'inscriptionjeudi 2 mai 2002StatutMembreDernière intervention 2 février 2010 26 juil. 2005 à 09:37
salut,
tout d'abord merci de ta réponse, mais je penses que je me suis mal exprimer:
j'utilise effectivement
RTB.SelStart = laPositionDuCaractèreDansLeTexte
RTB.SelLength = 1
Couleur = RTB.SelColor
pour récupérer la couleur d'un caractère et ca marche...
je sais que un retour chariot sur un RTB s'écrit CHR 13 + 10
mon problème était le suivant:
afin de pouvoir détecter les retour chariot durant le scan caractère par caractère de mon RTB, je faisait un
replace(RTB.text, CHR(13) & CHR(10), CHR(13)
avant ma boucle de scan afin de pouvoir détecter mes retour chariot avec un seul caractère, mais, comme tule décrit, la fonction replace() fonctionnant en text brut, cette dernière retirait tous les attributs de couleur, et donc ma boucle venant seulement après, je n'avais plus de couleur.
Mais entre temps, j'ai trouver une solution de remplacement (tellement simple que j'en ai eu honte d'avoir poster sur le forum ! lol)
en fait, maintenant, plutot que d'utiliser la fonction Replace() avant ma boucle, je fais directement mon scan caractère par caractères (ce qui concerve mes attribut de couleur) et lorsque je tombe sur un CHR(13), je teste si le caractère suivant est un CHR(10), si c le cas, je suis sur un retour chariot, et je continue....
c con, mais je n'y avait pas penser...désolé pour le dérangement, et merci