Problème avec Selstart

Résolu
cs_zerozen Messages postés 6 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 12 octobre 2007 - 21 août 2007 à 08:17
cs_zerozen Messages postés 6 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 12 octobre 2007 - 22 août 2007 à 14:06
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 août 2007 à 10:36
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 août 2007 à 08:49
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
0
cs_zerozen Messages postés 6 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 12 octobre 2007
21 août 2007 à 09:07
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
0
cs_zerozen Messages postés 6 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 12 octobre 2007
22 août 2007 à 14:06
Bonjour Renfield,

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

zerozen
0
Rejoignez-nous