Findnearest dans la Combobox

cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 juin 2002 - 27 juin 2002 à 12:40
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 juin 2002 - 28 juin 2002 à 15:11
Bonjour,

j'aurais savoir comment faire (a part trouver un autre composant) pour pouvoir saisir dans une combobox et qu'il se place sur l'item le plus proche de ma saisie. C'est déjà le cas mais seulement pour la première lettre.

Merci d'avance,

Mikael

8 réponses

cs_Bestiol Messages postés 833 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 3 novembre 2005 1
27 juin 2002 à 14:08
Salut !

J'espère avoir bien compris !! Ceci devrait faire l'affaire :

procedure TForm1.ComboBox1Change(Sender: TObject);
Var i: Integer;
begin

For i := 0 To ComboBox1.Items.Count - 1 Do
If Pos(ComboBox1.Text, ComboBox1.Items[i]) = 1 Then
ComboBox1.ItemIndex := i;

end;

Bestiol.
0
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 juin 2002
27 juin 2002 à 15:27
Merci mais le probleme c'est que cela laisse la possibilié de saisir quelquechose qui n'est pas dans la liste.
Exemple : tu tapes "dup" et j'aimerai que cela trouve le plus proche "durant" mais comme il y a aucun item dans ma liste qui commence par "dup" il laisse dup dans la combo.text !!
0
cs_Bestiol Messages postés 833 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 3 novembre 2005 1
27 juin 2002 à 16:12
Voilà le code... Il marche malheureusement qu'à moitié... J'ai fait ça un peu à l'aarache !! A toi de l'optimiser, mais je pense que le principe est là :

procedure TForm1.ComboBox1Change(Sender: TObject);
Var i, j, k: Integer;
Texte: String;
begin

If ComboBox1.Text = '' Then Exit;
Texte := ComboBox1.Text;

For i := 0 To ComboBox1.Items.Count - 1 Do
If Pos(Texte, ComboBox1.Items[i]) > 0 Then
Begin
ComboBox1.ItemIndex := i;
Exit;
end;

For j := 1 to Length(Texte) do
For k := 0 To ComboBox1.Items.Count - 1 Do
If Pos(Texte[j], ComboBox1.Items[k]) > 0 Then
ComboBox1.ItemIndex := k;

end;

Bestiol.
0
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 juin 2002
27 juin 2002 à 17:02
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
27 juin 2002 à 21:02
Pourqoui alors dans ce cas tu ne met pas ComboxBox1.Style à csDropDownList ?
Comme ça la saisie d'une valeur qui ne fait par partie de la liste est interdite.

--- :sleepy) Nono du Moulin :sleepy) ---
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
27 juin 2002 à 23:36
Nono40 a raison.
Ce n'est pas aprce le composant interdit de saisir un Item qu'il interdit la frappe de touches.
En mettant Style à csDropDownList, ce composant effectue une recherche incrémentale tout seul !

May Delphi be with you.
Delphi advanced
0
cs_Bestiol Messages postés 833 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 3 novembre 2005 1
28 juin 2002 à 00:43
Arf !! J'avais même pas pensé à regarder ça !!

Bien vu !!!

bye
Bestiol.
0
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 juin 2002
28 juin 2002 à 15:11
je me suis compliqué la vie pour rien,
csDropDownList est parfait !!
Merci
0
Rejoignez-nous