Comment ne pas pouvoir rentrer deux memes items dans une ComboBox ?

Résolu
Val08000 Messages postés 22 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 23 octobre 2005 - 7 juil. 2005 à 20:05
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 - 8 juil. 2005 à 08:46
Bonjour,
Je programme en Delphi depuis pas très longtemps !
Voila mon problème : je dispose d'un Edit, d'un bouton nommé "ajouter" et d'une combobox.
Lorsque je clique sur le bouton "ajouter" j'ai le texte marqué dans Edit qui s'insert dans un nouvel Item de ma ComboBox.
Je voudrais savoir si il est possible et comment faire afin de ne pas pouvoir ajouter deux fois le meme item, donc pour ne pas avoir deux fois le meme item !
En fait, si je mets un certain texte dans Edit, et si je clique deux fois sur le bouton "ajouter", je souhaiterais qu'il n y ait qu'un seul item dans ma Combobox possédant le nom marqué dans Edit !
Merci d'avance !

Val08000

12 réponses

cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
7 juil. 2005 à 21:17
Tu lis tout simplement le contenus des items de ta combobox, et tu regarde s'il n'existe pas déjà.



Exemple:(à adapter)



function EstPresent(Element:string):Boolean;

var

i:integer;

begin

Result:= False;

For i:=0 to combobox1.ItemsCount-1 do

begin

If ComboBox1.Items[i] = Element then Result:=True;

end;

end;



Ensuite tu n'a qu'a tester s'il l'élément existe:



If not EstPresent(Edit1.Text) then else ShowMessage('L'élément est déjà présent !');
3
Val08000 Messages postés 22 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 23 octobre 2005
7 juil. 2005 à 21:55
Ok Merci,
Mais alors tout ca, je le mets dans une procedure ?
Désolé de demander destrucs pareils mais voila ke je débute !
Merci !

Val08000
3
cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
7 juil. 2005 à 22:10
Non, tu le met simplement dans ton code. Vu que ca utilise un composant, tu met:

function Form1.EstPresent(Element:string):Boolean;



si tu y arrive vraimnet pas je t'enverrai une source.
3
Val08000 Messages postés 22 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 23 octobre 2005
7 juil. 2005 à 22:16
Oui si ca te derange pas, je veux bien la source car la c un peu galere ! Tu peux me l'envoyer a [mailto:val08000@yahoo.fr val08000@yahoo.fr] si ca t'arrange !

En tout cas Merci !

Val08000
3

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

Posez votre question
cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
7 juil. 2005 à 22:17
Ok, laisse moi 5-10 minutes.
3
Val08000 Messages postés 22 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 23 octobre 2005
7 juil. 2005 à 22:40
Impecccable !!!!!
C génial !Merci beaucoup !
Sinon, ils sont pas mal tes boutons ! Comment tu fé pour les avoir ?

Encore Merci pour tout !

Val08000
3
cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
7 juil. 2005 à 22:43
Pour les boutons tu ajoute simplement le style XP a ta forme. Pour cela
tu ajoute 'XPMan' dans les uses c'est tout. (regarde la source que je
t'ai envoyé).
3
Val08000 Messages postés 22 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 23 octobre 2005
7 juil. 2005 à 22:51
Oki !
Merci beaucoup pour tout !
@+

Val08000
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
7 juil. 2005 à 23:23
salut ,

il y a plus simple pour savoir si un élément est présent dans une liste : il suffit d'utiliser la methode items.IndexOf() qui recherche la position d'un élément dans une liste.

if ComboBox1.Items.IndexOf(element)<>-1 then l'élément est dans la liste;
3
Val08000 Messages postés 22 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 23 octobre 2005
8 juil. 2005 à 00:45
Ah oué !
Beh heu pourrais tu me donner plus d'infos, car la, ce ke je suis en train de faire, ca ne fonctionne pas !
Merci !

Val08000
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
8 juil. 2005 à 08:36
salut,

je ne vois pas le probleme chez moi ça marche.

tu peux utliser le test soit directement à la place de la fonction EstPresent(element) puisque if ComboBox1.Items.IndexOf(element)<>-1 then est vrai si l'élément est dans liste

IndexOf(var:string) est une methode de TStrings;

pour l'utliser directement tu fais:

if ComboBox1.Items.IndexOf(element)<>-1 then

begin

MessageDlg(element +' est deja dans la liste', mtError , [mbOk], 0);

exit; // on averti et on sort sans rien faire

end else;

begin

ComboBox1.Items.Append(element); // met l'élement à la fin de la liste

end;

nota : element doit être une variable de type string;

soit tu l'utilises dans la fonction de cpt pingu

tu fais:

function EstPresent(Element:string):Boolean;

begin
Result:= False;
if ComboBox1.Items.IndexOf(element)<>-1 then Result: =true;

end;

ça marche aussi mais cela donne un code un peu moins efficace que l'utilisation directe.

ComboBox1.Items est un TStrings si tu veux en savoir plus sur les TStrings vas voir dans l'aide DELPHI à la rubrique TStrings tu y trouveras toutes les propriétés et méthodes permettant de les manipuler (insertion, supression, tri..........)

ainsi chaque fois que tu trouveras Items dans un composant tu pourras utiliser ces propriétes et ces methodes;

bonne prog

3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
8 juil. 2005 à 08:46
c'est encore moi

puisque tu utilises une combobox si tu mets la proprété AutoComplete a true Delphi te donne directement les élélents qui contiennent ce que vient d'être saisie dans la propriété Text
3