2012-10-11 4 views
0

J'essaye de faire un autocomplete combobox comme ceci dans l'événement keyUp.garder le curseur même position dans le champ après requery

Private Sub Combo59_KeyUp(KeyCode As Integer, Shift As Integer) 
    If Len(Combo59.Text) > 2 Then 
     Combo59.RowSource = "SELECT City FROM Mills WHERE City LIKE '%" & Combo59.Text & "%' GROUP BY City ORDER BY City;" 
     Me.Dirty = False 
     Combo59.Requery 
    End If 
End Sub 

Le problème est que, après la requery, il sélectionne tout le texte dans le champ alors quand la presse utilisateur la clé suivante, il efface tout.

Y at-il un moyen facile, ou je dois trouver la position du curseur et le remettre après la requery?

Merci

Répondre

2

Cela peut nécessiter quelques ajustements, mais il devrait vous donner l'idée générale:

Private Sub Combo59_KeyUp(KeyCode As Integer, Shift As Integer) 
Dim SaveSelStart 
    If Len(Combo59.Text) > 2 Then 
     SaveSelStart = Combo59.SelStart 
     Combo59.RowSource = "SELECT City FROM Mills WHERE City LIKE '%" & Combo59.Text & "%' GROUP BY City ORDER BY City;" 
     Me.Dirty = False 
     Combo59.Requery 
     Combo59.SelLength = 0 
     Combo59.SelStart = SaveSelStart 
    End If 
End Sub 
+0

Merci monsieur, cela fonctionne comme un charme. Je pensais qu'il pourrait y avoir une autre solution ou que c'était ma façon de faire la saisie semi-automatique qui était vraiment mauvaise. – Marc

+0

Je viens de réaliser quelque chose. Cela ne me permet pas de faire des espaces. Si j'appuie sur l'espace, le curseur revient à la dernière lettre. Avez-vous une idée pourquoi – Marc

+0

En réalité, c'est la combobox qui supprime automatiquement les espaces. – Marc

Questions connexes