GB3- Faire clignoter un label
Rédigé par spheris
Aucun commentaire
Classé dans : apprentisssage, gambas 3, Label, Tutoriel
Aujourd'hui nous allons voir une astuce bien pratique.
A) Cahier des charges
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
Mais comment cela peut il fonctionner?
Nous savons que le ET logique réagit à la table suivante:
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 .
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:
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é
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
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.
