GB3- Faire clignoter un label

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, gambas 3, Label, Tutoriel Mots clés : aucun
Bonjour,
Aujourd'hui nous allons voir une astuce bien pratique.

A) Cahier des charges

Je souhaite réaliser une led à l'aide d'un label, c'est a dire qu'il change de couleur en fonction de l'état d'une variable booléène.

Prenons un exemple:

si myvar = False alors Label1 sera de couleur noire.
Si myvar = True alors Label1 sera de couleur Jaune.

B) Première solution utiliser SELECT CASE

Nous pourrions tout naturellement écrire une condition comme ceci:

Select Case myvar
  Case False
    label1.Background = Color.Black
  Case True
  label1.Background = Color.yellow
End Select



C) Utiliser IF THEN


Une autre solution serait d'utiliser une condition IF.

If myvar = False Then label1.background = Color.Black
If myvar = True Then label1.background = Color.Yellow


D) Utiliser un opérateur logique

Je me suis posé la question de savoir si il n'y a pas moyen de supprimer les conditions. Il suffit simplement de faire un ET logique avec la couleur, ce qui revient à traduire le problème comme ceci :

Voici le code pour notre exemple posé avec un opérateur logique ET(AND en anglais):

Label1.Background = &HFFFF00& And myvar

lacouleur de mon label est égal à: la couleur jaune (&HFFFF00&) et l'etat de ma variable.

Mais comment cela peut il fonctionner?

Nous savons que le ET logique réagit à la table suivante:

0 et 0 : 0
0 et 1 : 0
1 et 0 : 0
1 et 1 : 1


Et bien si nous faisons un ET logique avec une couleur et que la variable booléène est à false nous somme dans le cas de la première ligne à savoir :

0 ET 0: 0 .

le chiffre 0 correspond à la couleur noire (&H000000&)

et si la variable booléène myvar est à True (ou 1 logique) la 4eme ligne est satisfaite à savoir :

1 ET 1 : 1

On pourrait croire que le résultat est le chiffre 1 mais non, c'est bien la couleur Jaune qui est recopié vers la sortie.

Conclusion:

Dans ce cas précis l'opérateur logique ET recopie l'entrée vers la sortie quand la variable myvar est à True.
Rappelez vous de cette petite astuce quand vous souhaitez réaliser des conditions IF ou SELECT.

D) L'opérateur NOT ou opérateur inversé

De même, pour prendre un autre exemple, il est parfois utile d'écrire une non condition (pas trops naturelle pour nous humain) mais qui simplifie parfois.
Par exemple :

If NOT myvar then....


revient à dire :

Si c'est l'inverse de la valeur de myvar alors....

on pourrait même définir des états de propriétés widgets comme ceci :

Label1.Visible = Not myvar
label2.enabled = myvar
Frame1.Visible = Not myvar


E) Divers: Clignotement d'un label

Enfin une autre petite astuce en vrac sur le label pour faire clignoter un label ,c'est à dire changer la couleur, nous devrons utiliser un timer.
Déclarons deux variable globale dans notre form:

Private lc As Integer[] = [&H00FF00&, &HFFFF00&] 'couleur etat label clignotement
Private lck As Integer
 

et dans l'évènement du timer écrire ce code :

Public Sub timer1_Timer()
lck = (lck + 1) Mod 2
Label1.Background = lc[lck] End


Explication:
Je fais simplement varier la variable lck de 0 à 1 en boucle par la commande MOD puis je choisi dans la liste respectivement la couleur à l'emplacement 0 ou 1.

Merci pour votre attention.