bonsoir,
je veux que le contenue d'un combobox(Items) change suivant le choix effectué dans un autre combobox
comment le faire?
merci
bonsoir,
je veux que le contenue d'un combobox(Items) change suivant le choix effectué dans un autre combobox
comment le faire?
merci
il te suffit dans le OnDropDown du second ComboBox de lire le contenu de la première ComboBox et de charger les Items ...
peux-tu donner plus de détails?(en faite je suis un débutant au monde du Delphi)surtout comme le items contient plusieurs lignes donc je vois pas comment ecrire ce code la
merci
Si tu es débutant, consulte un peu plus l'aide (plus ou moins de fiable selon les versions), regarde aussi la classe TStrings, c'est l'une des plus utilisées avec les controles visuels (Combo, ListBox, RadioGroup, TMemo, ...), tu dois comprendre la classe TStrings pour comprendre Items, Lines ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 procedure TFrmTestDivers.ComboBoxDetailDropDown(Sender: TObject); begin with TComboBox(Sender) do // Sender c'est la 2nde ... begin Items.Clear(); case ComboBoxMaster.ItemIndex of 1 : begin Items.Add('11'); Items.Add('12'); Items.Add('13'); end; 2 : begin Items.Add('21'); Items.Add('22'); Items.Add('23'); end; ... end; end; end;
je n'arrive pas a executer mon programme, il me signale une erreur dans cette ligne "with TComboBox(Sender) do // Sender c'est la 2nde ..."
j'ai remlacer le Tcombobox par le combo principal et le sender par le second mais ça ne marche pas, en faite la documentation que j'ai n'est pas dutout sufisante,
merci de m'aider encore plus a comprendre...
Quel Delphi ? fait donc voir le code que tu as adapté ...
j'utilise le delphi 7 entreprise
je ne comprends pas a quoi sert la ligne suivante et par quoi remplacer sender et Tcombobox
with TComboBox(Sender) do // Sender c'est la 2nde ...
with TComboBox(Sender) do est simplement une simplification d'écriture.
Dans les paramètres d'une procédure événementielle (et par convention), Sender est toujours le composant qui à généré l'événement. S'il s'agit du ComboBox18, Sender est le ComboBox18.
Mais dans le prototype de l'événement (la procédure définie dans OnDropDown, soit dans ton cas ComboBoxDetailDropDown), Sender est déclaré comme le type le plus générique, soit TObject. Pour pouvoir accéder aux propriétés d'un combobox, on doit par conséquent transtyper, faire comprendre au compilateur que cette variable est un ComboBox, d'où le TComboBox().
L'exemple de Shai pourrait aussi être écrit ainsi:
En résumé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure TFrmTestDivers.ComboBoxDetailDropDown(Sender: TObject); begin ComboBoxDetail.Items.Clear(); case ComboBoxMaster.ItemIndex of 1 : begin ComboBoxDetail.Items.Add('11'); ComboBoxDetail.Items.Add('12'); ComboBoxDetail.Items.Add('13'); end; 2 : begin ComboBoxDetail.Items.Add('21'); ComboBoxDetail.Items.Add('22'); ComboBoxDetail.Items.Add('23'); end; ... end; end; end;
- Sender est l'objet qui a appelé cette procédure.
- TComboBox(Sender) est la façon dont le compilateur doit interprété cette variable Sender.
- Le with t'a permis de supprimer 7x le terme ComboboxDetail.
- De plus, ce genre d'écriture te permettrait de lier cette événement à plusieurs ComboBox puisqu'on se base sur l'objet passé en paramètre et non une variable figée.
merci beaucoup pour vos explications!!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager