Sélection d'un ligne en rich text box

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 166 fois - Téléchargée 54 fois

Contenu du snippet

Un moyen de trouver le début et la fin d'un ligne dans une rich text box, et la sélectionnée

j'y est refait quelques modifs pour assurer le bon fonctionnement !!!

Source / Exemple :


Form1.Rich1.SelLength = 0
Vs = 0
Backup = 0
For t = 0 To Len(Form1.Rich1.Text)
    Form1.Rich1.Find "net_", Vs, Len(Form1.Rich1.Text)      'Recherche de "net_", il est tjs situé en début de ligne
    Vs = Form1.Rich1.SelStart + Form1.Rich1.SelLength       'on vient de trouver un "net_", le recherche devra reprendre après la fin du mot
    If Vs = Backup Or Form1.Rich1.SelLength = 0 Then Exit For 'on vérifie que ce n'est pas la deuxième fois que l'ont passe sur ce mot ou si il n'en existe pas dans le texte , sinon on se casse de la boucle
    TempIChar = Vs                              'Préparation de la variable TempIChar
    LinNb1 = Form1.Rich1.GetLineFromChar(Vs)          'Le N° de ligne qui va chager dasn le do loop
    LinNb = Form1.Rich1.GetLineFromChar(Vs)           'Le N° de ligne qui va servir pour la comparaison
        Do While LinNb = LinNb1                     'Do loop tant que la ligne ne change pas (ne pas utiliser : Do While LinNb = Rich1.GetLineFromChar(Vs), le Do ne fonctionnera pas !!!)
        LinNb1 = Form1.Rich1.GetLineFromChar(TempIChar)    'on cherche la prochaine ligne caractère par caractère
        TempIChar = TempIChar + 1                   'Tempichar correspondait vs qui équivaut à la fin du mot rechercher
        DoEvents                                    'Très important, en cas de Problème on peut qd mm Quitter
        Loop
    LinVerif = Form1.Rich1.GetLineFromChar(Form1.Rich1.SelStart - 1)
    If LinVerif <> LinNb Then ' juste un petit truc pour vérifier si on est en début de ligne
    TempIChar = TempIChar - 1                   'on est sortit de la boucle, donc on a changé de ligne, donc la fin de la ligne précédente correspond au caractère pécédent
    Form1.Rich1.SelLength = TempIChar - Form1.Rich1.SelStart 'Rich1.SelStart n'a pas changé, il ne rest qu'à changé la longueur de la sélection
    Form1.Rich1.SelColor = &HC000&                    'Un peu de couleur, ici du vert
    End If
    Vs = Form1.Rich1.SelStart + Form1.Rich1.SelLength       'Je sais qu'on déjà mis ça plus haut, mais vs à changé
    Backup = Vs                                 'Un petit Backup de vs pour pouvoir vérifier la condition située un peu plus haut au prochain passage
    DoEvents                                    'DoEvents pour le cas où le fichier serai long, ou la boucle ne finisse pas
Next t

Conclusion :


Vous n'avez plus qu'a mettre ça dans un sub par exemple

A voir également

Ajouter un commentaire

Commentaires

darkervein
Messages postés
5
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
24 octobre 2003
-
Je suis débutant et désolé si je dis une bêtise, mais pourquoi ne pas faire un
Pos1 = 1 + len(rich1.text) - InStr(rich1.selstart,strreverse(rich1.text),chr$(10))
(ce qui permet de repérer le début de la ligne). Et ensuite faire un
Pos2 = InStr(rich1.selstart,rich1.text,chr$(10))
pour repérer la fin de la ligne. (en gérant les 2 exceptions que constitue la premiere ligne et la derniere).
On a plus qu'à selectionner (avec rich1.selstart=pos1 et rich1.sellength = Pos2 - Pos1) et voilà. Si j'ai tout faux merci de me le dire.
MicDundee
Messages postés
386
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
12 avril 2019
1 -
Tout ça pour ça. :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.