CheckCoche

Beaucoup d'informations sont données pour le bouton PushZone qui ne sont pas toutes reprises ici. Une lecture de PushZone 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.

XXXXCoche sont des classes de boutons carrés avec une coche quand ils sont actifs. Le carré visible mesure 11 pixels sur 11 pixels, 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 carré se positionne au milieu, ce n'est qu'un dessin.

CheckCoche est donc une classe de cases à cocher carrées avec une coche quand ils sont actifs.

 

Exemples d'utilisation

CheckCoche bouton(0,0,LARGEUR,HAUTEUR); // Crée bouton sur toute la surface de l'écran
CheckCoche bouton(150,100,170,120); // Crée bouton au centre en mode PAYSAGE 320x240
CheckCoche bouton = new CheckCoche(100,100,120,120); // Crée une instance dynamique bouton
new CheckCoche(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 CheckCoche
 public:
  CheckCoche(int x1, int y1, int x2, int y2);
  byte demiX1, demiY1, demiX2, demiY2;
  word buttonColor;
  void (*onSelectFunction)(void);
  void (*onUnselectFunction)(void);
  CheckCoche *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

CheckCoche(): 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
- PushCoche; Bouton poussoir case à cocher
- CheckZone; Bouton bistable (va vient) sans dessin
- CheckCircle; Bouton bistable (va vient) rond
- RadioCoche; Bouton radio (un seul bouton actif parmi plusieurs) case à cocher

 

Exemple

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 PushZone. Ici les boutons ne font rien. Pour avoir des boutons qui travaillent, se reporter aussi à PushZone.

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-930-CheckCoche\Exemple-930-CheckCoche.ino (dans votre fichier téléchargé):

// Mise en place de 3 boutons de type CheckCoche (case à cocher, dessin
// carré avec une coche si il est actif). On peut voir l'activité du bouton
// à la présence d'une coche sous le stylet. 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 des instances, doit se faire en dehors du setup
// Dans ce cas les boutons sont accessibles partout
CheckCoche boutonHaut(190, 90, 230, 130); // Bouton en haut
CheckCoche boutonCentre(190, 140, 230, 180); // Bouton au centre
CheckCoche boutonBas(190, 190, 230, 230); // Bouton en bas


void setup()
{
  // Si on veut 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.
  CheckCoche::buttonColor=BLUE;
  
  setGraphMode(PAYSAGE); // Initialisation de la carte
  text(F("Appuyez sur un bouton"));
}


void loop()
{
  scanEvent(); // Gestion des boutons et des horloges, le plus souvent seul dans le loop
}

Résultat: