logo Pierre AULAS
Visual Basic 2008 - Régler la couleur
 Parcours  |   Réalisations  |   Cours  |   Chroniques  |   Divers
Création de l'interface graphique
Définition des propriétés
Ecrire le code du programme

Régler la couleur

Cet exercice doit permettre d'aborder les trois événements KeyPress, Change et LostFocus.
Il met en oeuvre les conversions de type, les fonctions et les appels de procédure.
Il nécessite l'usage de le propriété BackColor du formulaire et de la fonction vb intégrée RGB.

Cette image vous montre l'aspect de votre application une fois terminée.
Quatre étiquettes servent à décrire les différents éléments du formulaire. Celui-ci comporte trois cases recevant les valeurs Rouge, Verte et Bleu qui vont définir la couleur du fond du formulaire.
Le traditionnel bouton Quitter permet de quitter l'application.

Vous pouvez télécharger l'exécutable ici en faisant un clic droit (enregistrer sous).

Création de l'interface graphique

Vous avez à mettre en place:
  - 4 étiquettes: une pour le titre, trois pour commenter les zones de textes.
  - 3 zones de texte pour que l'utilisateur puisse entrer des données.
  - 1 boutons de commande pour quitter l'application.

Cela vous donne quelque chose dans le genre  :

A l'aide des options fournies par le menu Format > Uniformiser la taille ou Format > Aligner, etc., uniformisez la taille des contrôles et centrez-les de manière à ce que votre formulaire ressemble à peu près à cela:

Il ne vous reste plus qu'à Verrouiller les contrôles.

Définition des propriétés

Vous devez définir les propriétés des 8 contrôles présents sur votre formulaire comme indiqué dans le tableau qui suit:

Objet  Propriété  Valeur
Form1  Name  frm01
 Caption  Exercice - Régler la couleur
 BackColor Blanc
 CancelButton cmdQuitter
Label1  Name  lblTitre
 Caption  Changement de couleur
 Alignment 2 - Center
 Text  MS sans serif, 12, gras
 BackColor Web > Transparent
Label2  Name  lblRouge
 Text  Rouge :
 BackColor Web > Transparent
Label3  Name  lblVert
 Text  Vert :
 BackColor Web > Transparent
Label4  Name  lblBleu
 Text  Bleu :
 BackColor Web > Transparent
Text1  Name  txtRouge
 Text  255
 TextAlign Right
 Font  MS sans serif, 12, gras
Text2  Name  txtVert
 Text  255
 TextAlign Right
 Font  MS sans serif, 12, gras
Text3  Name  txtBleu
 Text  255
 TextAlign Right
 Font  MS sans serif, 12, gras
Button1  Name  cmdQuitter
 Caption  &Quitter

La propriété BackColor du formulaire permet de définir la couleur de fond.

On prend soin de définir la propriété BackColor des étiquettes afin que le changement de couleur du formulaire se voit partout (et donc même au travers des contrôles qui possèdent par défaut leur propre couleur de fond).

Les zones de texte contiennent les valeurs 255 car le code rgb 255,255,255 correspond à la couleur blanche qui est celle du formulaire au démarrage.

Votre formulaire doit désormais ressembler à cela:

Pour l'instant il ne réagit pas aux sollicitations de l'utilisateur. Il faut donc passer à la partie programmation.

Ecrire le code du programme

Quelles vont être les interactions de l'utilisateur avec votre formulaire?

Lorsque l'utilisateur va rentrer une valeur dans une des trois cases, la couleur de fond du formulaire sera mise à jour en conséquence.
Autrement dit: quelque soit la case que l'utilisateur modifie, la même procédure de mise à jour de la propriété BackColor du formulaire est déclenchée.
Il serait inutile de reproduire pour chaque zone de texte le même code. Il est plus simple, pour chaque zone de texte, d'appeler une procédure commune.

Afin de ne pas interférer avec la suite de l'exercice, la mise à jour de la couleur du formulaire se fera sur l'événement TextChanged de chacune des zones de texte.
Cet événement est déclenché lorsque l'utilisateur quitte la zone de texte sur laquelle il était pour séléctionner un autre contrôle du formulaire. La mise à jour de la couleur ne se fait ainsi que lorsque l'utilisateur a fini de rentrer sa valeur. Ce n'aurait pas été le cas avec l'événement Change qui se déclenche à chaque fois qu'un caractère est modifié dans la zone de texte (donc si vous écrivez "123" il est déclenché 3 fois).

Commençon par écrire la procédure qui mettra à jour la couleur de fond en fonction des valeurs entrées dans les zone de texte.
Pour cela il suffit de savoir que lorsqu'on veut modifier la propriété BackColor du formulaire, il faut passer par un objet Color et sa méthode FromArgb(R As Integer, G As Integer, B As Integer) qui renvoie la couleur rgb correspondant aux paramètres passés.

Private Sub ChangerCouleur()

Dim bytRouge As Byte
Dim bytVert As Byte
Dim bytBleu As Byte

bytRouge = Val(txtRouge.Text)
bytVert = Val(txtVert.Text)
bytBleu = Val(txtBleu.Text)

Me.BackColor = Color.FromArgb(bytRouge, bytVert, bytBleu)

End Sub

Une fois créées vos trois procédures événementielles liées aux trois zones de texte, il vous reste à indiquer le nom de la procédure commune (nous l'avons appelée ChangerCouleur dans la correction) qui sera appelée dans chacune d'elles.


Ce qui vous donne:

Private Sub txtRouge_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtRouge.TextChanged
  Call changerCouleur()
End Sub

Private Sub txtVert_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtVert.TextChanged
  Call changerCouleur()
End Sub

Private Sub txtBleu_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBleu.TextChanged
  Call changerCouleur()
End Sub

En réalité il n'est pas nécessaire de typer les variables avec un type aussi restrictif que Byte (rgb admet des entiers). Mais comme un code rgb n'est de toute manière défini que par des valeurs allant de 0 à 255, nous avons choisi cette option. Elle rend du coup plus nécessaire la mise en place de fonctions vérifiant les valeurs entrées par l'utilisateur.

À ce stade en effet, si vous vous êtes amusé à entrer une valeur supérieure à 255, votre application a planté. Il faut donc contrôler ce que rentre l'utilisateur.

Vous pouvez par exemple créer une fonction Verifier qui empêchera qu'une valeur supérieure à 255 puisse être affectée aux variables de type Byte.

Function Verifier(ByVal pTest As Integer) As Byte
  If pTest < 256 Then
    Return pTest
  Else
    Return 255
  End If
End Function

Elle sera appelée de cette manière&htinsp; :

bytRouge = Verifier(Val(txtRouge.Text))
bytVert = Verifier(Val(txtVert.Text))
bytBleu = Verifier(Val(txtBleu.Text))

Vous pouvez télécharger les sources de l'exercice ici en faisant un clic droit (Enregistrer sous).

Haut de page
Plan du site  |  Mentions légales  |  Crédits  |  Aide