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. 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.
XXXXZone sont des classes de boutons sans dessin prédéfini. En principe, on affiche une image de
fond qui va servir de zone visible pour les boutons de cette classe.
CheckZone est donc une classe de cases à cocher sans dessin prédéfini.
class CheckZone
{
public:
CheckZone(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 Coche et Cercle (pas d'intérêt poue cette classe)
*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
unselect();
Désactive ce bouton
isSelected();
Informe de l'état du bouton (coché ou non)
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,
Pour définir un bouton, il faut donner sa zone d'action. Pour des raisons de stockage mémoire et de précision,
n'est enregisré que les nombres pairs des valeurs passées. Les nombres impairs sont arrondis au nombre pair inférieur.
Ainsi la zone (100,100,201,201) est équivalente à (100,100,200,200).
Si on a plusieurs boutons dont les zones d'actions ont une partie commune, comme les boutons sont anlysés dans l'ordre
inverse de leur déclaration, la zone commune devient propriété du bouton défini en dernier.
Exemples d'utilisation:
CheckZone:
CheckZone bouton(0,0,LARGEUR,HAUTEUR); Crée bouton sur toute la surface de l'écran
CheckZone bouton(150,100,170,120); Crée bouton au centre en mode PAYSAGE
CheckZone bouton = new CheckZone(100,100,120,120); Crée une instance dynamique bouton central
new CheckZone(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 onSelect()
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 la sélection
onUnselectFunction:
bouton.onUnselectFunction = & action; Appel la fonction void action(void) lors de la déselection
select(), unselect()
bouton.select(); Sélectionne ce bouton
isSelect():
if (bouton.isSelect())... Si la case est cochée
onSelect(), onUnselect():
voir les exemples complets
Voir aussi:
- scanEvent(); Moteur de la gestion des évènements
- PushZone; Bouton poussoir sans dessin
- CheckCoche; Bouton bistable (va vient) case à cocher
- CheckCircle; Bouton bistable (va vient) rond
- RadioZone; Bouton radio (un seul bouton actif parmi plusieurs) sans dessin
|