Findnearest dans la Combobox

Signaler
Messages postés
15
Date d'inscription
vendredi 1 mars 2002
Statut
Membre
Dernière intervention
28 juin 2002
-
Messages postés
15
Date d'inscription
vendredi 1 mars 2002
Statut
Membre
Dernière intervention
28 juin 2002
-
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

Messages postés
833
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
3 novembre 2005
1
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.
Messages postés
15
Date d'inscription
vendredi 1 mars 2002
Statut
Membre
Dernière intervention
28 juin 2002

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 !!
Messages postés
833
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
3 novembre 2005
1
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.
Messages postés
15
Date d'inscription
vendredi 1 mars 2002
Statut
Membre
Dernière intervention
28 juin 2002

merci
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
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) ---
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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
Messages postés
833
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
3 novembre 2005
1
Arf !! J'avais même pas pensé à regarder ça !!

Bien vu !!!

bye
Bestiol.
Messages postés
15
Date d'inscription
vendredi 1 mars 2002
Statut
Membre
Dernière intervention
28 juin 2002

je me suis compliqué la vie pour rien,
csDropDownList est parfait !!
Merci