PushCoche

Définition Utilisation Exemple Côté technique
 

Beaucoup d'informations sont données pour le bouton PushZone qui ne sont pas toutes reprises ici. Un lecture de PushZone est une bonne idée.

PushXXXX sont des classes de boutons poussoirs, genre bouton de sonnette. Lorsque l'on appuie dessus "le courant passe" et "s'arrête" si on relâche. Pour cette bibliothèque, lorsqu'on appie dessus un événement onSelect est généré et il devient actif. Lorsque l'on relâche l'appui, ou si l'appui sort de la zone d'action, un évènement onUnselect est généré et le bouton devient inactif. Bon nombre d'applications n'utilise que l'événement onSelect.

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.

PushCoche est donc une classe de boutons poussoirs carrés avec une coche quand ils sont appuyés.

class PushCoche
{
 public:
  PushCoche(x1, y1, x2, y2);

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, coordonnnés absolues DIVISEES par 2
  buttonColor;
Couleur du fond des boutons (Bordure et coche sont de la couleur opposée)
  *onSelectFunction;
Pointeur sur la fonction à appeler lorsque le bouton est sélectionné
  *onUnselectFunction;
Pointeur sur la fonction à appeler lorsque le bouton est déselectionné
  *controleSuivant;
Pointeur sur le contrôle suivant dans la liste des contrôles
  select();
Active un bouton. N'a aucun intérêt pour ce bouton, mais pas pour des descendants. Le bouton est automatiquement activé lorsque l'on appuie dessus
  unselect();
Désactive ce bouton N'a aucun intérêt pour ce bouton, mais pas pour des descendants. Le bouton est automatiquement déactivé lorsque l'on le relâche
  isSelected();
Informe de l'état du bouton. Pour ce bouton, il est actif tant qu'on appuie dessus
  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éselection. 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.

 

Exemples d'utilisation:
PushCoche:
PushCoche bouton(0,0,LARGEUR,HAUTEUR); Crée bouton sur toute la surface de l'écran, mais le dessin sera tout petit, au centre

PushCoche bouton(150,100,170,120); Crée bouton au centre en mode PAYSAGE

PushCoche bouton = new PushCoche(100,100,120,120); Crée une instance dynamique bouton central

new PushCoche(100,100,120,120); Crée une instance dynamique bouton central mais sans pointeur dessus on n'a pas forcément besion d'y accéder si on a surchargéla fonction onClic()

demiX1, demiY1, demiX2, demiY2:
circle(demiX1+demiX2, demiY1+demiY2, 10); Trace un cercle de rayon 10 centré sur le bouton

onSelectFunction:
bouton.onSelectFunction = & action; Appel la fonction void action(void) lors de l'appui

onUnselectFunction:
bouton.onUnselectFunction = & action; Appel la fonction void action(void) lors du relâchement

select(), unselect()
Peu d'intérêt pour ce bouton, c'est pour les descendants

isSelect():
if (bouton.isSelect())... Si on est en train d'appuyer sur le bouton

onSelect(), onUnselect():
voir les exemples complets

 

Voir aussi:
- scanEvent(); Moteur de la gestion des évènements
- PushZone; Bouton poussoir sans dessin
- PushCircle; Bouton poussoir rond
- CheckCoche; Bouton bistable (va vient) case à cocher
- RadioCoche; Bouton radio (un seul bouton actif parmi plusieurs) case à cocher