Combobox Bloquer la saisie d'un texte non present dans la combobox

Résolu
dimdidi Messages postés 26 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 18 juillet 2006 - 13 déc. 2005 à 12:40
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 15 déc. 2005 à 18:06
Bonjour,

Je voudrais faire une recherche dans une combobox en tapant mon texte au fur et a mesure
(ce qui est fait deja avec style:=csDropDown).
(style:=csDropDownList ne le fait pas)

Mais si la derniere lettre taper donne un texte qui n'existe plus dans ma Combobox, je voudrais annuler la dernier touche saisie ou l'empecher.
On peut savoir si le texte n'existe pas avec ItemIntex=-1

Vu autrement Je ne voudrais empecher un texte qui n'existe pas dans la Combobox

J'espère que c'est assez clair.

Si quelqu'un a une idee !
Merci d'avance.



Dimdidi

3 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
15 déc. 2005 à 18:06
Il faut que tu récupères la touche préssée sur l'événement keydown et
que tu l'ajoutes au texte déjà présent dans le combo. Tu testes ensuite
la chaine ainsi obtenue sur les items du combo. Si elle est présente,
tu accepte la touche, sinon tu l'annules

Simon
3
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
14 déc. 2005 à 10:34
Bonjour,

En vitesse :
Une variable globale Sauv déclaré comme String et:

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if Combobox1.Items.IndexOf(Combobox1.text)=-1 then begin
sauv:=copy(sauv,1,length(sauv)-1);
Combobox1.Text:=sauv;
combobox1.SelStart:=length(sauv);
end;
end;


Procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
sauv:=sauv+char(Key);
end;

Dom
0
dimdidi Messages postés 26 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 18 juillet 2006
15 déc. 2005 à 09:31
Merci pour la réponse, mais ca ne marche pas.

Autrement l'idée est là.


Dimdidi
0
Rejoignez-nous