Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[Annulé] VB6 - problème avec SelStart dans TetxBox


Messages recommandés

Posté(e)

Bonjour !

Je suis avec VB6. Je recherche dans une textbox une chaîne de caractères avec le code suivant :

idx = 100
lg = Len(recherche)
frm_history.histo.SetFocus
frm_history.histo.SelStart = idx
frm_history.histo.SelLength = lg
zone = frm_history.histo.Find(frm_history.recherche)

Recherche = zone text
Histo = textbox format Memo
idx = integer

Problème : quelque soit la valeur que je code dans idx, la recherche (Find) part toujours de 0, même si je force le départ de recherche à 100. Par exemple, le texte recherché est trouvé en position 35 (zone) alors que je demande de démarrer la recherche à partir de 100.

Une idée ? Je sèche..

Merci d'avance

Notpa

Posté(e)

même si ça m'étonne, ce post évoque de faire un SetFocus sur le RichTextBox

https://forums.windowssecrets.com/showthread.php/31990-HIghlighting-text-in-RichTextBox-control-(VB-6-0)?s=80ea5233670f3e2e8bec975fe2ba7d0e&p=164103&viewfull=1#post164103

quels sont les arguments attendus (ou possibles) avec la méthode Find associée à la TextBox? apparemment la méthode attend le texte à rechercher, 2 surcharges et potentiellement le paramètre rtfWholeWord

Posté(e)

Bonsoir Greywolf !

Merci pour ton aide.

Premièrement, c'est bien une RichTextBox et non une TextBox que j'utilise. Dans mon exemple, je positionne bien le SetFocus sur la box.

La commande Find a la syntaxe suivante :

  • champ.Find(argument, start, long, options)

champ est la RichTextBox, argument est la zone contenant le texte à chercher, start est la position du départ de la recherche, lg est la longueur du texte à trouver.

Donc, si je code zone = frm_history.histo.Find(frm_history.recherche, idx, lg), l'argument n'est pas trouvé ! Mais si je retire idx et lg, il le trouve, mais à partir de la position de départ à 1.

Va comprendre !
   

Posté(e)

Je laisse tomber le SelStart. J'ai écrit une boucle qui scanne le texte référence avec celui recherché :

lg = Len(recherche)
boucle:
Do Until idx > Len(frm_history.histo)
    z1 = Mid(frm_history.histo.Text, idx, lg)
    If z1 = frm_history.recherche Then
        zone = idx - 1
        GoTo couleur:
    Else
    idx = idx + 1
    End If
Loop
couleur:
frm_history.histo.SelStart = zone
frm_history.histo.SetFocus
frm_history.histo.SelLength = lg
frm_history.histo.SelColor = vbRed

Ce qui est curieux, c'est que le SelStart dans la section Couleur fonctionne !

Ma boucle fonctionne très bien.

Je passe ne Annulé le sujet.

Merci à ceux qui m'ont lu.

Notpa

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...