Gambas France BETA


Pas de compte ? Incription

groupe de bouton, simplifier le code...

Ce sujet est résolu.

1
AuteurMessages
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 possimusJe 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 possimusThe 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 !
;)
1