spheris | #1 Posté le 27/4/2018 à 13:59:07 |
---|
| Bonjour, Comment simplifier ce code ?
4 boutons appartenant au groupe toto. dans chaque tag respectifs, je mets 0,1,2,3
et j'écris ce code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| PUBLIC SUB toto_Click() SELECT CASE LAST.tag CASE 0 bouton0.Enabled = FALSE bouton1.Enabled = TRUE bouton2.Enabled = TRUE bouton3.Enabled = TRUE CASE 1 bouton0.Enabled = TRUE bouton1.Enabled = FALSE bouton2.Enabled = TRUE bouton3.Enabled = TRUE CASE 2 bouton0.Enabled = TRUE bouton1.Enabled = TRUE bouton2.Enabled = FALSE bouton3.Enabled = TRUE CASE 3 bouton0.Enabled = TRUE bouton1.Enabled = TRUE bouton2.Enabled = TRUE bouton3.Enabled = FALSE END SELECT END
|
en gros dès qu'on clique sur un bouton, il passe en disabled et les autres en enabled. Peut-on simplifier ce code? Merci pour votre aide. |
vuott | #2 Posté le 27/4/2018 à 23:26:06 |
---|
Ne cedere ineluctabili possimus | Je proposerais...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| PUBLIC SUB toto_Click()
DIM c, i AS INTEGER DIM bb AS Button[] bb = [Button0, Button1, Button2, Button3] SELECT CASE LAST.tag CASE 0 c = 14 CASE 1 c = 13 CASE 2 c = 11 CASE 3 c = 7 END SELECT FOR i = 0 TO 3 bb[i].Enabled = CBool(c AND Shl(1, i)) NEXT END
|
Mais, si tu peux assigner les valeurs 14, 13, 11 et 7 directement à la propriété.Tag, vaut mieux: tu pourras éliminer "Select....Case" !
« Vita non suavis esse potest, nec Mors amara. » |
didier18 | #3 Posté le 27/4/2018 à 23:36:37 |
---|
| Bonjour spheris
En complément du code de vuott , il y a aussi cette possibilité...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| ' Gambas class file
PRIVATE btn AS NEW Button[]
PUBLIC SUB Form_Open() DIM i AS INTEGER FOR i = 0 TO 3 'nbr de btn qui sont créés btn.Add(NULL, btn.Count) 'on ajoute un btn et on le compte btn[i] = NEW Button(ME) AS "grbtn" 'le composant (comptabilisée par i) est un nouveau composant btn[i].Tag = i 'on met le n° du composant (i) dans sa propriété .tag WITH btn[i] 'pour ce bouton .H = 20 'défini sa hauteur .Text = btn[i].Tag 'affiche le tag dans le texte .W = 50 'défini sa largeur .Y = i * 20 'place le button END WITH NEXT END
PUBLIC SUB grbtn_Click() DIM i AS INTEGER FOR i = 0 TO 3 'pour chaque button btn[i].Enabled = TRUE 'le rend Enabled NEXT btn[LAST.Tag].Enabled = FALSE 'rend le dernier button non enabled END
|
Bonne journée. |
vuott | #4 Posté le 28/4/2018 à 12:57:57 |
---|
Ne cedere ineluctabili possimus | The member of italian Gambas forum, Gianluigi, suggests this code:
1
2
3
4
5
6
| PUBLIC SUB toto_Click()
Action["bouton", ME].Enabled = TRUE LAST.Enabled = FALSE
END
|
Pay attention:
Every Button ".Group" property = "toto" Every Button ".Action" property = "bouton"« Vita non suavis esse potest, nec Mors amara. » |
spheris | #5 Posté le 29/4/2018 à 09:07:57 |
---|
| Gianluigi, Thanks a lot ! It works perfectly ! |