Bonjour, j'aimerai savoir comment faire pour qu'à chaque lettre saisie dans le TEdit par l'utilisateur (ONKeyPress je crois), cela séléctionne l'item du TListBox qui y correspond le plus???
comme pour l'aide BCB par exemple.
Bonjour, j'aimerai savoir comment faire pour qu'à chaque lettre saisie dans le TEdit par l'utilisateur (ONKeyPress je crois), cela séléctionne l'item du TListBox qui y correspond le plus???
comme pour l'aide BCB par exemple.
Salut (Re-),
Bon, aucune fonction ne fait cela à ma connaissance ... puisque IndexOf ne fonctionne que si tu as la chaine à trouver intégralement !!
=> Donc impossible pour ce que tu souhaites !
J'ai fait ça récemment :
(A placer dans l'événement Edit1Change)
Cela marche bien chez moi 8)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 AnsiString s = ","+ListBox1->Items->CommaText.UpperCase()+","; int a = s.Pos(","+Edit1->Text.UpperCase()); s = s.SubString(a+1, s.Length()-a); s = s.SubString(1, s.Pos(",")-1); ListBox1->ItemIndex = ListBox1->Items->IndexOf(s);
N.B. Cela risque de ne pas fonctionner si tu as des virgules (",") dans tes chaînes de caractères ... il faudrait l'adapter ...![]()
Mathieu
P.S. Tu choisis bien tes questions![]()
merci, ca marche, mais comment faire pour que si il n'y a pas le mot recherché, ca selectionne celui qui y ressemble le plus (avec les premieère lettre koi)!
Re-Bonsoir,
Là il faut refaire un truc différent ...
Tu tries ta liste par Ordre Croissant (par exemple) grâce à Sorted = true.
Puis, dans le OnChange du Edit, tu fais une boucle qui parcourt ta boucle, pour trouver la 1ère occurence du caractère 1, puis du 2 ...
Je sais pas si c'est clair : le code n'aura aucun rapport car IndexOf ne servira pas.
Mathieu
P.S. J'ai pas trop le temps de te faire un bout de code ... préviens si t'as des problèmes, et si j'ai trop mal expliqué !![]()
Partager