CheckCircle
Beaucoup d'informations sont données pour le bouton CheckZone qui ne sont pas toutes reprises ici. Une lecture de CheckZone est une bonne idée.
CheckXXXX sont des classes de cases à cocher, genre "j'ai lu les conditions de vente". Comme bouton, c'est comme un bouton de lumière avec télérupteur, a la limite un interrupteur va et vient. Lorsque l'on appuie dessus il change d'état. Pour cette bibliothèque, lorsqu'on appuie dessus, si il n'est pas actif, il le devient, et un événement onSelect est généré. Si il était déjà actif, il se désactive et un événement onUnselect est généré. Lorsque l'on relâche l'appui, ou si l'appui sort de la zone d'action, il ne se passe rien.
XXXXCircle sont des classes de boutons ronds qui changent de couleur quand ils sont actifs. Le disque visible mesure 11 pixels de diamètre, mais la zone sur laquelle on peut pointer est définie par les paramètres passés au constructeur. Elle peut être plus grande ou plus petite. Le disque se positionne au milieu, ce n'est qu'un dessin.
CheckCircle est donc une classe de cases à cocher dessinées avec des cercles.
Exemples d'utilisation
CheckCircle bouton(0,0,LARGEUR,HAUTEUR); // Crée bouton sur toute la surface de l'écran CheckCircle bouton(150,100,170,120); // Crée bouton au centre en mode PAYSAGE 320x240 CheckCircle bouton = new CheckCircle(100,100,120,120); // Crée une instance dynamique bouton new CheckCircle(100,100,120,120); // Crée une instance dynamique bouton sans pointeur dessus circle(bouton.demiX1+bouton.demiX2, bouton.demiY1+bouton.demiY2, 10); // Cercle centré sur le bouton bouton.onSelectFunction = &action; // Appel la fonction void action(void) lors de lors de la sélection bouton.onUnselectFunction = &action; // Appel la fonction void action(void) lors de la désélection if (bouton.isSelect())... // Si la case est cochée ...
Référence
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
class CheckCircle public: CheckCircle(int x1, int y1, int x2, int y2); byte demiX1, demiY1, demiX2, demiY2; word buttonColor; void (*onSelectFunction)(void); void (*onUnselectFunction)(void); CheckCircle *controleSuivant; void select(void); void unselect(void); boolean isSelected(void); virtual void onSelect(void); virtual void onUnselect(void) virtual void drawButton(void);
Attributs et méthodes
CheckCircle(): Constructeur, s'insère dans la liste des contrôles gérées. x1, y1, x2, y2: zone d'action
demiX1, demiY1, demiX2, demiY2: Occupation de l'espace dans l'écran, coordonnés absolues DIVISEES par 2
buttonColor: Couleur du fond des boutons de la classe
*onSelectFunction: : Pointeur sur la fonction à appeler lorsque le bouton est sélectionné
*onUnselectFunction: : Pointeur sur la fonction à appeler lorsque le bouton est désélectionné
*controleSuivant: Pointeur sur le contrôle suivant dans la liste des contrôles
select(): : Active un bouton.
unselect(): : Désactive ce bouton
isSelected(): : Informe de l'état du bouton.
onSelect(): : Fonction appelée lors de la sélection. On peut surcharger cette fonction, par défaut elle est vide
onUnselect(): : Fonction appelée lors de la désélection. On peut surcharger cette fonction, par défaut elle est vide
drawButton(): : Fonction appelée lors de l'activation, la désactivation, à l'initialisation de la librairie ou sur appel de la
fonction drawControles(). On peut surcharger cette fonction, par défaut elle est vide pour les boutons XXXXZone, et fait ce qu'il faut pour les autres. On
peut surcharger cette méthode, mais si on veut garder le dessin par défaut, il faut appeler la méthode drawButton() de la classe mère.
Voir aussi
- scanEvent(); Moteur de la gestion des événements
- PushCircle; Bouton poussoir rond
- CheckZone; Bouton bistable (va vient) sans dessin
- CheckCoche; Bouton bistable (va vient) case à cocher
- RadioCircle; Bouton radio (un seul bouton actif parmi plusieurs) rond
Exemples
Dans l'exemple qui suit trois boutons sont placées à droite de l'écran. Il y a plusieurs implantations possibles, je ne donne ici que la plus simple. Pour avoir toutes les possibilités se reporter au bouton CheckZone. Ici les boutons ne font rien. Pour avoir des boutons qui travaillent, se reporter aussi à CheckZone.
PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-931-CheckCircle\Exemple-931-CheckCircle.ino (dans votre fichier téléchargé):
// Mise en place de 3 boutons de type CheckCircle (cases à cocher, dessinés // avec des disques qui changent de couleur si ils sont actif). On peut voir // l'activité des boutons au changement de couleur. La zone d'action est bien // plus grande que le dessin, on peut donc pointer légèrement à côté // Les boutons ont une définition statique # $menu = ":PG"; include <PecheuxGraph_ILI9341_8bits.h> // Appel de la bibliothèque // Déclaration statique de l'instance, doit se faire en dehors du setup // Dans ce cas le bouton est accessible partout CheckCircle boutonHaut(190, 90, 230, 130); // Bouton en haut CheckCircle boutonCentre(190, 140, 230, 180); // Bouton au centre CheckCircle boutonBas(190, 190, 230, 230); // Bouton en bas void setup() { // Si on veur changer la couleur par défaut des boutons, il vaut mieux le // faire avant qu'ils soient dessinés. La première fois c'est à l'appel de // setGraphMode(), les fois suivantes c'est lors des appuis et des // relâchements. CheckCircle::buttonColor=BLUE; setGraphMode(PAYSAGE); // Initialisation de la carte text(F("Appuyez sur un bouton")); } void loop() { scanEvent(); // Gestion des boutons et des horloges }
Résultat:
