Problème avec Selstart

[Résolu]
Signaler
Messages postés
6
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
12 octobre 2007
-
Messages postés
6
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
12 octobre 2007
-
Bonjour à tous,

Dans un programme, je mémorise des textes dans une listbox. Avec les touches flêchées,
je me promène dans cette liste et le texte sélectionné est affiché dans un textbox.

Si j'utilise la touche 40 (flêche basse), le curseur se positionne bien à la fin du texte. Par contre avec la touche 38 (flêche haute),
le curseur se place sur l'avant dernier caractère du texte !

Voici le code tout simple qui affiche le texte (Pin_Name$) dans le contrôle Text3(1).
     
Text3(1).Text = Pin_Name$(Compteur)
Text3(1).SelStart = Len(Pin_Name$(Compteur))

Pouvez vous m'aider, merci.

zerozen

4 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
en gros, Windows te dit :

l'utilisateur a pressé la touche fleche haut.
tu donne le focus Text3(1).SetFocus
quand windows traite ta touche, tu es donc dans le textbox, c'est normal...

tu peux tenter de remettre KeyCode à 0 avant l'appel à DISPLAY_Afficher_les_Listes
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
surement une histoire de focus...

c'est la pression sur ta fleche qui déplace le caret après que tu l'ai pourtant positionné correctement...

étrange, ton code, cela dit, montre nous le code de l'evenement qui l'appelle
Messages postés
6
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
12 octobre 2007

Salut Renfield et merci.

Voici le code :

<hr />


Private Sub Text3_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
 '
 Compteur = Numéro_du_Contact_Sélectionné
 '
 Select Case Index
            '
            ' [ Flêche basse ] : Retour arrière
            Case 38
                '
                Select Case DISPLAY_Mode
                    Case 0
                        '
                        ' Décrémenter le compteur
                        If Compteur > 1 Then
                            Compteur = Compteur - 1
                        End If
                        '
                    Case 1
                        '
                        ' Décrémenter le compteur
                        If Compteur > 1 Then
                            Compteur = Compteur - 1
                        End If
                        '
                        ' Sélection de l'index de la liste en fonction du mode d'affichage
                        If DISPLAY_Mode = 1 Then
                            If Compteur < (CAE_Pin_Number / 2) + 1 Then
                                LIST_Index = 0
                                    Else
                                        LIST_Index = 1
                            End If
                        End If
                        '
                        Call DISPLAY_Afficher_les_Listes
                        '
                End Select
                '
        End Select
        '
    Case Else
    '
 End Select
 '
End Sub



et :



Sub DISPLAY_Afficher_les_Listes()
 '
 Call Afficher_les_Listes_des_Contacts
 Call Afficher_la_Barre_de_Sélection
 '
 Text3(0).Text = LTrim(Str$(Compteur))
 Text3(1).Text = Pin_Name$(Compteur)
 Text3(1).SelStart = Len(Pin_Name$(Compteur))
 Text3(1).SetFocus
 '
End Sub
<hr />

Quand j'appuie sur la touche "flêche basse", le curseur se positionne bien à la fin du texte :

Par contre, si je suis sur le texte index 2 (ADC4 par exemple) et que j'appuie sur la touche flêche haute, mon code affiche bien le texte ADC3/CMP1 mais le curseur se place à la
longueur de la chaîne -1 caractère.




zerozen
Messages postés
6
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
12 octobre 2007

Bonjour Renfield,

Ca fonctionne !
Je te remercie beaucoup pour ton aide car je n'aurai vraiment pas trouvé.

zerozen