gambaslinux.fr

Les Contrôles › Le Bouton

L'utilisation du bouton est relativement simple, Voici quelques petits tutoriels pour l'utiliser.

Nous allons passer en revue divers sujets comme :

Création d'un bouton

Je vous propose une petite vidéo pour la création d'un bouton

L'évènement ENTER

enterevent.png

L'évènement le plus souvent déclenché par un bouton qui nous interesse ,c'est le Clic dela souris.
Mais il en existe un autre qui est fort interessant pour tous les widgets. C'est ENTER.
Dans cette petite application (sous forme de farce) vous verrez tout de suite à quoi cet evenement sert.
en effet ENTER signifie que le curseur de la souris entre dans la surface affichée de notre widget. A nous d'ajouter le code qui convient comme ceci par exemple :

PUBLIC SUB button1_enter()
button1.x = rnd(me.width - 10)
button1.y = rnd(me.height - 10)
END

Les évènements du Button

Pour chaque élément de l'interface, il vous est possible de déclencher certains évènements.
Nous allons aujourd'hui détailler leur fonction.

Le code de l'évènement est toujours écrit de cette façon.

PUBLIC SUB nomducontrole_evenement()
END


Par exemple si je veux créer l'évènement clic de mon bouton Button1, j'écrirai donc ce code ci :

PUBLIC SUB button1_click()
END


voyons maintenant à quoi servent ces évènements :

L'évènement AUTORESIZE
Très peu utilisé il sert à renvoyer une info comme quoi votre interface s'est auto-arrangé(mise en page auto).

Button1.AutoResize = True

L'évènement DblClick
Celui là est beaucoup utilisé. Il permet de faire réagir votre élément de l'interface au double click de l'utilisateur.

Public Sub Button3_DblClick()
End


L'évènement DRAG
Permet l'utilisation du Drag and drop (glisser déplacer). cet évènement démarre au clic et début du déplacement de votre widget.

Public Sub Button3_Drag()
End

L'évènement DRAGMOVE
cet évènement est actif tout au long du déplacement de vos données TEXT, data,icon

Public Sub Button3_DragMove()
Button1.Text = Last.drag
End


L'évènement Drop
cet évènement sera actif lorsque le widget destinataire aura reçu vos données au relâchement du bouton de votre souris.

Public Sub Button3_Drop()
Button1.Text = "Elément déplacé"
End


L'évènement Enter
Cet évènement démarrera quand vous passerez la souris sur votre widget

Public Sub Button3_Enter()
Print "le curseur est dans le bouton"
End


L'évènement GOTFOCUS
cet évènement permet de récupérer ce qu'on appelle le focus.pour préciser ce qu'est le focus, prenons un exemple.
le focus sera le widget qui réagira a l'appuie de la touche entrer.
Si vous avez 2 boutons OK et Annuler, vous pouvez régler le focus pour qu'en appuyant sur entrée vous déclenchiez OK ou Annuler.
Gotfocus (veut dire on obtient le focus, A contrario de Lostfocus(perdu le focus))

L'évènement KEYPRESS
cet évènement réagit a l'appuie d'une touche sur le clavier

L'evenement KEYRELEASE
cet évènement réagit au lâché de la touche clavier appuyé

L'évènement LEAVE
cet évènement réagit lorsque vous quitter l'aire de l'élément de l'interface affiché.si le curseur de souris sort de votre widget, alors vous déclenchez cet évènement

L'évènement LOSTFOCUS
inverse de gotfocus, vous faite perdre le focus a votre widget

L'évènement MENU
cet évènement réagit au clic d'un menu (ordinaire ou popup). Le menu popup est traduit en français par "menu contextuel"

L'évènement MOUSEDOWN
cet évènement réagit a l'appui du clic de souris sur votre widget

L'évènement MOUSEDRAG
cet évènement réagit au déplacement de la souris lors d'un DRAG de vos données

L'évènement MOUSEMOUVE
cet évènement réagit au déplacement de votre souris, même s'il n'y a aucun clic

L'évènement MOUSEUP
cet évènement réagît au relâchement du bouton de votre souris

L'évènement MOUSEWHEEL
cet évènement réagit à la roulette de votre souris si il est détecté bien entendu. Pour utiliser les évènements de la souris, voiri ICI

Texte sur deux lignes

Une petite astuce toute simple pour mettre un texte sur Deux (ou plus) lignes dans un bouton, ou toolbutton.
il vous suffit d'écrire la commande :

button1.text = "texte 1" & Chr$­(10) & "texte 2"

 texte1 est la première chaine de caractère entre guillements

Texte2 est la deuxième chaine de caractère.

Chr$­( ) est une instruction pour retourner le caractère ayant pour code le code hexa entre les parenthèse. Ici le 10 correspondant à une fin de ligne.

Remarque : Chr$(10) peut être renmplacé par \n qui signifie la même chose. AInsi on peut écrire :

button1.text = "texte 1\ntexte 2"

ce qui est bien plus court

Ouvrir une page web

Aujourd'hui simple commande pour que lors d'un clic sur un bouton nous ouvrions une page web quelque soit votre navigateur installé.
N'oubliez pas dans les composants(propriétés de votre projet) de cocher GB.desktop.
Il suffit d'utiliser la commande :

PUBLIC SUB button1_click()
desktop.OPEN("http://gambaslinux.fr")
END


Voilà, c'est tout pour aujourd'hui !

(Merci à manu pour ses précieux conseils).

Simplification du code

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 qui consiste à 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 ensemble qui 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, saisssez respectivement 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 = TRUE
bouton2.Enabled = TRUE
bouton3.Enabled = FALSE
END SELECT
END


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

Nous pouvons encore simplfier le code.
 En 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 pour chaque 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 widget appartenant au groupe toto
Action["bouton", ME].Enabled = TRUE la propriété enable passera à true sur la widget dont l'action se prénomme bouton,
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.

Pour aller plus loin...

Documentation officielle du wiki gambas

https://gambaswiki.org/wiki/comp/gb.qt4/button

Page Wiki du Button

https://gambas-fr.org/wiki/Button