Comment déterminer si une CheckBox a été modifiée?

Bonjour à tous,
Comment déterminer si une CheckBox a été modifiée (coché ou non) EN DEHORS de l’évènement “ValueChanged” (le code est dans un bouton).
Par exemple je coche puis je décoche la boite. Comment savoir qu’elle a été modifiée (son état est identique) ?
Il y avait bien la commande “CheckBox.Action” mais elle semble ne plus être reconnue.
Merci,
Denis

Je ne comprends pas ta question, l’ancien event .Action est remplacé par .ValueChanged . Cet event se lance au moment où l’utilisateur change l’état de la checkbox.
Et .Value te donne l’état de la checkbox au moment où tu exécute l’instruction.

D’accord. Le sens de ma question est : est-il possible de tester cet évènement depuis un bouton (c-a-d Button1.Pressed) ?
Merci.

https://documentation.xojo.com/api/user_interface/desktop/desktopcheckbox.html

Tu as deux choix: utiliser .Value ou .VisualState.

Si j’ai bien compris.

Dans ce genre de cas, le plus simple est d’utiliser une variable booléenne “sale” (“dirty”) qui enregistre le click.

Vous pouvez ajouter la variable ckbx_changed as boolean à la fenêtre, qui sera mise à True dans l’évènement “ValueChanged” de la checkbox.

Ainsi, même si on double clique pour revenir à la même valeur, ckbx_changed sera vrai. Vous pouvez le remettre à faux ensuite, pour surveiller à nouveau.

Dans l’event Button1.Pressed tu testes MaCheckBox.Value ?

Le code contenu dans un événement (event) s’exécute quand cet événement se produit (.TextChanged si tu viens de modifier le texte d’un EditField ou .ValueChanged si tu coches/décoches une checkbox ou.Resized si tu redimensionnes une fenêtre etc. ).

Merci pour la réponse. J’avais envisagé un système identique en inserant une variable Booléenne dans l’évènement “ValueChanged” de chaque CheckBox.
Il faut probablement que je la déclare en variable globale.
Denis

Le problème d’une variable statique dans ValueChanged est qu’elle ne peut être accédée hors de la CheckBox. Une variable fenêtre ou globale est accessible de l’extérieur.

Si j ai bien compris ton probleme est le suivant:

tu souhaite savoir si un utilisateur a changé la valeur entre deux monments.

Je t invite a creer un classe dérivee de chekBox dans laquelle tu pourra mettre tout ce que tu veux (proprietes, events, méthodes)

Dans ton cas tu devras ajouter deux proprietes:

  • heure du dernier clic

  • valeur de la CB

jlp

1 Like