Bonjour,
j'aimerai pouvoir afficher dans une combobox donc du texte puis une valeur caché correspondant à ce texte.
j'ai recherché j'ai vu qu'il y avait des solutions,notamment en utilisant un objet, y a t il une autre solution ?
Version imprimable
Bonjour,
j'aimerai pouvoir afficher dans une combobox donc du texte puis une valeur caché correspondant à ce texte.
j'ai recherché j'ai vu qu'il y avait des solutions,notamment en utilisant un objet, y a t il une autre solution ?
???
Qu'est ce que tu ne comprends pas ?
Bonjour,
Ben bigre :on peut afficher du texte visible mais "afficher une valeur cachée" c'est pas de l'affichage !!!.Citation:
j'aimerai pouvoir afficher dans une combobox donc du texte puis une valeur caché correspondant à ce texte.
Par contre tu peux toujours associer à chaque Item de ta comboBox la valeur correspondante que tu peux cacher par exemple dans une stringList.
A+ :D
mdr oui c'est pas faux :p
aurais tu un petit exemple Gilbert Geyer ? :roll:
Re-salut,
Les lignes de texte de ta combobox sont elles saisies dans la propriété "strings" à la conception ? Ou proviennent elles d'une structure de stockage : si oui quelle structure ? Dans les deux cas il faut associer la bonne valeur cachée à la la ligne de texte correspondante.
Donnes un peu plus de détails sur ce que tu veux réellement faire même sous forme d'un bout de code erronné.
A+ :D
pour chaque mois je voudrai associé son numéro de mois.Code:
1
2
3
4
5
6
7
8
9
10
11
12 cbMois.items.add('Janvier'); cbMois.items.add('Fevrier'); cbMois.items.add('Mars'); cbMois.items.add('Avril'); cbMois.items.add('Mai'); cbMois.items.add('Juin'); cbMois.items.add('Juillet'); cbMois.items.add('Aout'); cbMois.items.add('Septembre'); cbMois.items.add('Octobre'); cbMois.items.add('Novembre'); cbMois.items.add('Décembre');
Re-salut;
Voiçi un exemple concoté pendant que tu répondais :suffit d'y remplacer :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 var SLValeurs : TstringList; //< StringList pour les valeurs cachées procedure TForm1.FormShow(Sender: TObject); begin combobox1.clear; combobox1.Items.Add('tagada'); SLValeurs.Add('1418'); combobox1.Items.Add('dugudu'); SLValeurs.Add('21297'); combobox1.Items.Add('tsoinstsoin'); SLValeurs.Add('22'); ComboBox1.ItemIndex:=0; end; procedure TForm1.ComboBox1Click(Sender: TObject); begin showMessage(SLValeurs[ComboBox1.ItemIndex]); end;
- 'tagada' par 'janvier' et '1418' par '1'
- 'dugudu' par 'février et '21297' par '2',
... et ainsi de suite.
A+ :D
D'accord merci beaucoup je vais tester :king:
[Avertissement] frm_RFT.pas(38): La variable 'SLValeurs' n'est peut-être pas initialisée
Il me met ça :S
Re-bonjour,
Bigre : dans la précipitation de copiers-collers-supprimer à partir du code testé j'ai scratché la ligne en vertA+ :DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 var SLValeurs : TstringList; procedure TfrmImgD.FormShow(Sender: TObject); begin SLValeurs :=TstringList.create; combobox1.clear; combobox1.Items.Add('tagada'); SLValeurs.Add('1418'); combobox1.Items.Add('dugudu'); SLValeurs.Add('21297'); combobox1.Items.Add('tsoinstsoin'); SLValeurs.Add('22'); ComboBox1.ItemIndex:=0; end; procedure TfrmImgD.ComboBox1Click(Sender: TObject); begin showMessage(SLValeurs[ComboBox1.ItemIndex]); end;
Pour une combobox avec des mois il est pas nécessaire d'utiliser une valeur associée dans une autre liste
Dans un boutonCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 cbMois.Items.clear; cbMois.items.add('Janvier'); cbMois.items.add('Fevrier'); cbMois.items.add('Mars'); cbMois.items.add('Avril'); cbMois.items.add('Mai'); cbMois.items.add('Juin'); cbMois.items.add('Juillet'); cbMois.items.add('Aout'); cbMois.items.add('Septembre'); cbMois.items.add('Octobre'); cbMois.items.add('Novembre'); cbMois.items.add('Décembre');
ItemIndex commencant à 0 et si les mois sont dans l'ordre, il suffit de rajouter 1 à ItemIndex pour connaitre le bon numéro de mois.Code:
1
2 Showmessage ('Le numéro de mois est : ' + IntToStr(cboMois.ItemIndex + 1));
Re-bonjour,
Absolument d'accord avec Rayek!!!
Avec mon exemple concocté avant de savoir qu'il s'agissait de mois j'étais parti sur un exemple où les valeurs cachées étaient quelconques et désordonnées. Autant pour moi ;)
A+ :D
mais si je veux 01 au lieu de 1 il faut que je rajoute le 0 moi meme ?
Je repartirais sur la première idée
Il est conventionnel de mettre un Object dans la Propriétés Objects d'une TStrings, mais on peut mettre aussi un entier ou un pointeur sur record ... ou un petit record qui tient sur 4 octet (je le fait pour le tag par exemple)Code:
1
2
3 combobox1.Items.AddObject('tagada', Pointer(141)); combobox1.Items.AddObject('dugudu', Pointer(21297)); combobox1.Items.AddObject('tsoinstsoin', Pointer(22));
Cela évite de gérer une autre liste ... autant profiter ce que fourni le langage en standard, et surtout c'est bien propre, on sait clairement que chaque item est associé à une information ...
mais pour les mois, il est vrai que l'ItemIndex + 1 reste le plus simple, cela peut être ensuite utiliser avec EndOfAMonth, EncodeDateMonthYeek, ...
pour le 01, tu peux faire
Code:Format('%.2d', [cboMois.ItemIndex + 1]);
+1 Shai, de manière très générale, associer un entier qui symbolise un identifiant par rapport au texte associé dans l'object d'une TStringList est très pratique.
(par exemple si tu décides d'afficher certains mois et pas d'autre, ou changer d'ordre etc... l'object restera associé)
Par contre, mais je chipote, le cast devrait être TObject( .... ) au lieu de Pointer( ... ) dans l'ajout sur la TStringList.
Bonjour,
J'aime bien l'idée de ShaiLeTroll avec combobox1.Items.AddObject au lieu d'une StringList pour les mêmes raisons et ça place l'idée au niveau de la résolution d'un cas général sans avoir de soucis à se faire en cas de triturations apportées par la suite dans le contenu de la combobox.
A+ :D