Mise en forme (très) rapide dans Richtext ???

Messages postés
153
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
29 mai 2005
-
Messages postés
4
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
2 novembre 2004
-
Voilà mon problème, j'ai un richtext avec du texte, jusque là c pas compliqué ;-)

Mais je voudrais que chaque fois qu'on écrit quelque chose entre "" ce soit en 32768 si se trouve entre <> qui eux sont en en 8421376 et le reste en noir. Le problème c'est que la méthode que j'utilise est très lente puisque je passe chaque caractère un à un:

Dim co(1)
Dim pe, de As Booleanpe True: de False
For i = 1 To Len(Rtext.Text)
carac = Mid$(Rtext.Text, i, 1) If carac "<" And pe Then co(0) 8421376: de = True
dej = False If carac Chr(34) Then If de Then If pe Then co(1) co(0): co(0) = 32768: pe = False: dej = True
Rtext.SelStart = i - 1
Rtext.SelLength = 1
Rtext.SelColor = co(0) If dej False Then If carac Chr(34) Then If de Then If pe = False Then co(0) = co(1): pe = True If carac ">" And de Then If pe Then co(0) 0: de = False
Next i

Voilà alors si je pouvais obtenir la même chose (ca marche très bien) mais en plus rapide (ici c trop lent) ce serait bien. 8-)

Je suis pas un pro donc SVP expliquez bien... :-p

1 réponse

Messages postés
4
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
2 novembre 2004

Bé vouala mon gar la soluce a ton bleme...

' On suppose que le conteneur est toujour le meme (form1.Rtext)
Sub SelectText(Deb As String, Fin As String, Colour As Double)
'
Dim T0 As String, T1 As String
Dim Memo0 As Integer, Memo1 As Integer
'
T1 = ""
' Memorisation du texte a modifier
T0 = Rtext.Text
'
' Trouver la zone a modifier
Do
' Cherche la 1ere occurance (Debut de la selection)
If InStr(1, T0, Deb) > 0 Then
Memo0 = InStr(1, T0, Deb)
Memo0 = Len(T1) + Memo0
T1 = T1 + Left(T0, InStr(1, T0, Deb))
T0 = Right(T0, Len(T0) - InStr(1, T0, Deb))
End If
' cherche la seconde occurance (fin de la selection)
If InStr(1, T0, Fin) > 0 Then
Memo1 = InStr(1, T0, Fin)
T1 = T1 + Left(T0, InStr(1, T0, Fin))
T0 = Right(T0, Len(T0) - InStr(1, T0, Fin))
End If
Rtext.SelStart = Memo0
Rtext.SelLength = Memo1 - 1
Rtext.SelColor = Colour
If InStr(1, T0, Deb) = 0 Then Exit Do
Loop
'
End Sub

y a + ka !!
Tu insere cette sub dans ton log et tu donne les parametre
Voila ceux qui corresponde a ton example:
SelectText Chr(34), Chr(34), 32768
SelectText "<", ">", 8421376

Bonne chance