Mise en forme d'un text... Aidez moi :)

cs_Ashitaka Messages postés 7 Date d'inscription lundi 9 décembre 2002 Statut Membre Dernière intervention 26 juin 2003 - 9 déc. 2002 à 22:54
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012 - 10 déc. 2002 à 09:24
Bonjour

je vous explique le problème :
Le but est de faire une espèce de mise en forme façon word, c'est à dire que lorsque le logiciel détecte un mot qui est dans sa liste (list4), le mot est automatiquement mis en gras et en bleu.
Ce que j'ai fait marche, mais malheureusement est beaucoup trop lent (5 secondes pour 90 lignes sur un athlon 1800+). En fait je teste chaque mot un par un dans tout le texte (donc si il y a 30 mots il parcourt le texte 30 fois).

Voci le code :
' La fonction qui vérifie si le mot est dans le texte
Private Sub verif(box As RichTextBox, mot As String)
Dim var As Integer
Dim i As Integer
var = Len(box.Text)

For i = 1 To Len(box.Text) Step 1
If Mid(box.Text, i, Len(mot)) = mot Then
box.SelStart = i - 1
box.SelLength = Len(mot)
box.SelBold = True
box.SelColor = vbBlue
box.SelStart = i + (Len(mot) - 1)

End If
box.SelStart = var
box.SelLength = 0
box.SelBold = False
box.SelColor = vbBlack
Next i

End Sub

' Le bouton qui parcourt le texte autant de fois qu'il y a de mots
Private Sub Command2_Click()
On Error Resume Next
Dim j As Integer
j = 0
modstate.Value = 0
While j < List4.ListCount
' Barre d'avancement
modstate.Value = modstate.Value + 100 / (List4.ListCount)
' Appel de la fonction
Call verif(algobox, List4.List(j))
j = j + 1
Wend
End Sub


Je voudrais que tout cela se fasse dans l'évènement text_change, mais alors là, c'est pas terrible...

Merci de vos réponses !!!
A voir également:

1 réponse

cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
10 déc. 2002 à 09:24
Et si tu vérifies qu'un mot du texte est présent dans ta list4, ce n'est pas plus rapide que vérifier qu'un mot de ta list4 est dans ton texte ? Tout dépend bien sûr de la aille de ta list4.

Sinon peut être en mettant les élements de ta list dans une table, avec un select ça ira peut être plus vite.

Pour qu'il reconnaisse à la frappe, plutôt que l'évènement text_change essayes text_KeyPress et effectue la vérification si l'utilisateur a appuyé sur espace... je dis ça, je dis rien, fais comme tu le sens..
A+

moustachu
0
Rejoignez-nous