gambaslinux

Aides aux utilisateurs de gambas linux

Tutoriels pour gambas et aide à la programmation

Bonjour,
Aujourd 'hui pour ce tutoriel, nous allons réaliser une application avec 4 boutons.
Je souhaite que quand je clique sur un bouton, les trois autres se désactivent à la manière du comportement des radiobutton.

A) création de l 'interface.

Créons 4 boutons comme ceci :


et un bouton Button5 dont la propriété Text est : Reset

qui nous permet de réactiver tous les boutons.

B) Ecriture du code

Tout naturellement nous pouvons écrire le code comme ci-dessous quiconsiste à désactiver les boutons non cliqués comme ceci :

Public Sub Button1_Click()
Button1.Enabled = True
Button2.Enabled = False
Button3.Enabled = False
Button4.Enabled = False
End

Public Sub Button2_Click()
Button1.Enabled = False
Button2.Enabled = True
Button3.Enabled = False
Button4.Enabled = False
End

Public Sub Button3_Click()
Button1.Enabled = False
Button2.Enabled = False
Button3.Enabled = True
Button4.Enabled = False
End

Public Sub Button4_Click()
Button1.Enabled = False
Button2.Enabled = False
Button3.Enabled = False
Button4.Enabled = True
End

Public Sub Button5_Click()
Button1.Enabled = True
Button2.Enabled = True
Button3.Enabled = True
Button4.Enabled = True
End


C) Simplification du code en utilisant les groupes

Nous pouvons simplifier ce code en utilisant les groupes.
En effet, les groupes servent à regrouper plusieurs widgets ensemblequi réagiront au même évènement.
dans la propriété GROUP de chaque bouton, saisissez toto.Tous ces boutons appartiendrons au groupe toto.

Dans la propriété Tag de chaque bouton, saisssezrespectivement 1,2,3,4.
Ainsi nous n 'aurons qu 'un seul évènement click comme ceci :

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 = TRU
bouton2.Enabled = TRUE
bouton3.Enabled = FALSE
END SELECT
END


D) simplification du code à l 'extrême.

Nous pouvons encore simplfier le code.
&nbspEn regardant de plus près, nous jouons sur la propriétéenabled pour activer ou désactiver le bouton.
Ainsi, nous pouvons utiliser la propriété ACTION en saisissant pourchaque bouton le texte bouton.
En cumulant le groupe et action, nous écrivons alors ce code :

PUBLIC SUB toto_Click()
Action[ bouton , ME].Enabled = TRUE
LAST.Enabled = FALSE
END


Expliquons ce code :
public Sub toto_click Lors d 'un click sur un widgetappartenant au groupe toto
Action[ bouton , ME].Enabled = TRUE la propriétéenable passera à true sur la widget dont l 'action se prénommebouton,
LAST.Enabled = FALSE et ce dernier qui a été cliquéaura sa propriété enabled à False.

En conclusion, nous avons simplifié le code en à peine 3 lignes.
C 'est ça la puissance de gambas.
Merci à tous pour votre attention.

wink