Point d'insertion dans un TextBox [Résolu]

Zermelo - 22 nov. 2012 à 20:28 - Dernière réponse :  Zermelo
- 23 nov. 2012 à 13:01
Bonjour à tous.

Dans un TextBox multiligne, est-il possible d'obtenir par le code le rang de la ligne dans laquelle se trouve le point l'insertion ?

Merci de me répondre.

Étant illettré, je signe d'une croix : ×
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2012 à 20:50
3
Merci
Bonjour,
Question qui devient maintenant rituelle ===>>
le rang de la ligne

de quel type ? Réel (séparée par un vrai retour à la ligne) ? ou non (simple saut d'affichage dans la textbox) ?
Car ce sont là deux choses totalement différentes !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2012 à 21:14
3
Merci
Je parle du rang réel. As-tu une idée ?

Oui : tout ce qui se trouve avant selectionstart (position du caret dans la textbox) === >> te donne la chaîne (appelons-là toto).
Tu éclates ( split ) cette chaîne toto en choisissant le retour charriot comme séparateur === >> Le Ubound de l'array obtenu te donne le nombre de retour-charriots.
Travaille sur ces bases.
Dans la foulée : intéresse-toi également à ceci (dans la foulée ... c'est toujours utile ...) :
=vs.71%29.aspx Tapez le texte de l'url ici.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2012 à 21:22
3
Merci
PS : j'espère que tu n'utilises pas une texbox en "substitut" d'une listbox. Ce serait plutôt dommage.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 22 nov. 2012 à 21:59
3
Merci
Bonsoir,

Je te propose une petite solution qui évite des copie de chaines en split :
(Avec une belle fonction .NET toute faite )

Dim currentLine = 1
For i = 0 To TaPetiteTextBox.GetFirstCharIndexOfCurrentLine() - 1
  If TaPetiteTextBox.Text(i) = vbLf Then
    currentLine += 1
  End If
Next


_____________
Kenji

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Charles Racaud
0
Merci
Bonjour ucfoutu.

Remarque judicieuse. Je parle du rang réel. As-tu une idée ?


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Non, rassure-toi, ce n'est pas un substitut. Par copier-coller, je récupère sur le net un texte dont les retours chariot sont signifiants. Toutefois cela pourrait être tentant car en Vb 2010 un TextBox possède une propriété Lignes As String() accessible en lecture-écriture. Cela me facilitera d'ailleurs le comptage des lignes que j'espérais pouvoir éviter.

Remerciements et amicales salutations.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Bonjour Charles Racaud.

La procédure que tu m'as donnée ma été fort utile. Un petit détail
TaPetiteTextBox.Text(i)

ne passe pas. J'ai donc procédé à la modification suivante
Private Function RangLigne(ByVal Box As TextBox) As Integer
        Dim Rng As Integer, l As Integer, i As Integer
        With Box
            l = .GetFirstCharIndexOfCurrentLine
            For i = 0 To .Lines.Length - 1
                If .GetFirstCharIndexFromLine(i) l Then Rng i : Exit For
            Next i
        End With
        Return Rng
    End Function


Grand merci pour ton aide.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo

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.