cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 2013
-
19 mai 2007 à 18:59
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 2013
-
20 mai 2007 à 10:09
alut tous le monde, voila, j'ai un code qui permet de faire une recherche dans un richtextbox, le but est que, lorsqu'on trouve telle chaine, on l'a mette de telle couleur. Auccun problême à ce niveau là, le blême, c'est que sa fait une recherche des que le texte du richtextbox change, et, le truc, c'est que des que je tape un truc au clavier, je me retrouve en bas du texte, embettant.
Je ne souhaitte pas me retrouver en haut non plus, j'aiemerais que le curseur (l'endroit ou j'écris) reste à sa position.
En claire, au fur et à mesure que j'écris, la recherche s'effectue sans qu'on se retrouve tout en bas du richtextbox, qu'elle ne se voix pas quoi. Voila mon code:
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
Try
Catch E9 As Exception'Si il y a des erreur
ToolStripStatusLabel2.Text = "Des erreurs ont été détectées"
Debogue.ListBox1.Items.Add(E9.Message)
Debogue.ShowDialog()
End Try
End Sub
Private Sub coloreMots(ByVal obj As Object, ByVal txt As String, ByVal clr As Color)
Dim rtb As RichTextBox = CType(obj, RichTextBox)
Dim idx, dep As Integer
dep = 0
Do
idx = rtb.Find(txt, dep, RichTextBoxFinds.WholeWord)
If Not (idx < 0) Then
rtb.SelectionStart = idx
rtb.SelectionLength = txt.Length
rtb.SelectionColor = clr
dep = idx + txt.Length
rtb.DeselectAll()
Else
Exit Do
End If
Loop
rtb.Update()
End Sub
Vous l'avez surment remarqué, c'est pour faire un éditeur html, si vous avez un truc qui fait comme la recherche colorisé que Dreamweaver par exemple, sa m'arrangerai plutôt qu'un code de fortune. Et, au passge, si vous avez un truc pour que la recherche s'effectue un peut plus rapidement...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 19 mai 2007 à 19:06
- Avant le Try, tu sauvegarde la valeur de la propriété SelStart
- Au Try..Catch, tu rajoute une clause Finaly, dans laquelle tu restaure la valeur de SelStart et tu met SeLenght à 0
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20132 19 mai 2007 à 20:16
Ralala, Casy, c'est facilement la 100em fois que j'accepte une de tes réponse, t'es trop fort. Merci, y reste un truc, mais c'est mineur, c'est juste que en revenant à la ligne, sa tréssaute un peu parceque la recherche passe au dessus du scroll, mais c'est pas gênant, sa fonctionne, merci.
Euh, t'as une adresse msn?
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20132 19 mai 2007 à 21:00
Oups, new problême, admettons que j'ai le texte suivant:
salut, comment sa va? nous ons est en pleine forme!!! on est content d'être ici...
lol, euh, j'ai remarquer qu'avec le code que j'avais, je pouvais, par exemple, coloré la chaine "<html>" uniquement si c'était la seul chaine présente dans la ligne du texte. Comment faire pour que, dans la phrase ci-dessus, colorer uniquement les lettre "m", et, aussi, comment colorer tous e qui est entre les caractère ? et ! sachant que je ne connais pas le nbr de caractère entre les deux...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 19 mai 2007 à 22:01
prennons le second cas, il te faut récupéré l'index du ? le donné à la propriété SelStart
récupéré l'index du !, faire la différence avec l'index du ? récupéré juste avant. Le résultat de la diff devient la valeur de SelLenght
Pour le problèe de "<html>" modifie le parametre de recherche WholeWord. Avec ce parametre tu ne recheche que des mots complets, c'est à dire encadré par des espace ou signe de ponctuation. Pour toi ce n'est pas bon puisque <html> peut ne pas etre suivi ou précédé d'espace.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20132 20 mai 2007 à 09:01
salut, merci, pour le <html>, c'est parfait, sa fonctionne, mais pour ? et !, c'est autre chose, je pense que je m'y prend mal, j'en fait quoi de la différence après?
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20132 20 mai 2007 à 09:21
ba justement, c'est la que sa ... . pffff, j'ai remarqué un new truc, quand j'écris pas exemple <html>, tous ce que j'écris ensuite et qui est sur la même ligne a une couleur.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 20 mai 2007 à 09:37
Donc :
i = index de ?
j = index de !
.SelectionStart = i
.SelectionLenght = j - i
Pour ton html, ça viens du fait que lorsque tu colore ta balise html, en suite tu ne remodifie pas la couluer de la selection, tu lui laisse celle qe tu as donné à la balise. Donc tout le texte tappé à la suite sera de la même couleur.
Si tu as suivi ce que je t'as dis plus haut, tu as du rajouter une clause Finaly au Try...Catch. Donc dans cette clause après avoir réinitialiser la sélection, tu rajoute une ligne pour réinitialiser aussi la couleur de la selection :
TaRTB.SelectionColor = TaRTB.ForeColor
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #