Fiche
technique
37 Rendre dynamique la légende d'une case à cocher (ou
d'un bouton, ou ...)
1 En Script GeoGebra 2 En JavaScript
QR Code
http://url.univ-irem.fr/ft1
Il est possible de modifier dynamiquement la légende associée à n'importe quel objet de GeoGebra . Si, dans la plupart des cas, cette manipulation ne présente que peu d'intérêt, en revanche, il peut s'avérer intéressant de modifier la légende d'une case à cocher en fonction de son état.
La case est cochée La case n'est pas cochée
Lors de la création d'une case à cocher, l'utilisateur est amené à fournir une légende qui, par défaut, reste figée. Pour remédier à cela, il est nécessaire de recourir au langage de script intégré au logiciel.
Comme il a été vu dans la fiche technique Montrer ou cacher un objet (page 231), une case à cocher permet, en particulier, de mo- difier la visibilité d'un objet. Dans cette fiche, nous considérerons une case à cocher qui permet de montrer ou de cacher un point A et nous supposerons que le booléen associé à cette case s'appelle case .
1
En Script GeoGebra
• En effectuant un clic avec le bouton droit de la souris sur la case à cocher, et en choisissant le menu Propriétés... , ouvrir le panneau des propriétés de la case à cocher.
• Choisir l'onglet Script.
• Dans l'onglet Par actualisation, inscrire la commande :
SoitLégende[case,Si[case,"Cacher le point A","Montrer le point A"]]
• Valider en cliquant sur le bouton
OKOK.
Méthode
Comme son nom l'indique, l'instruction
SoitLégende[<objet>,<texte>]permet d'affecter une légende
Rendre dynamique la légende d'une case à cocher (ou d'un bouton, ou ...) 383
donnée à un objet donné. L'objet est fourni en tant que premier paramètre de l'instruction et, dans notre cas, il s'agit de la case à cocher nommée case .
La légende, passée en tant que second paramètre, est bâtie à l'aide d'une instruction
Sidont la syntaxe est la suivante :
Si[<condition>,<valeur si vraie>,<valeur si fausse>].
On rappelle que, lorsqu'une case est cochée, le booléen qui lui est associé vaut
true, ou
falsedans le cas contraire. Ainsi, dans notre exemple, l'instruction
Sirenvoie la valeur "Cacher le point A" lorsque la case est cochée et la valeur "Montrer le point A" sinon. Ici, la condition écrite sous la simple forme
caseest équivalente à
case==true. Dans le cadre de cette seconde syntaxe, l'opérateur de comparaison == permet de vérifier que le booléen case a pour valeur
true. Un booléen peut être comparé aux valeurs
trueou
false, ou bien aux valeurs 0 ou 1 .
Ouvrir le fichier exemple
2
En JavaScript
Parfois, le langage GeoGebraScript se révèle insuffisant pour accomplir toutes les actions désirées par l'auteur du fichier et il est alors nécessaire d'utiliser des méthodes uniquement accessibles par le langage JavaScript.
Malheureusement, il n'existe pas de fonction JavaScript permettant de modifier la légende d'un objet. On peut alors se rabattre sur la méthode générique
evalCommand(<texte>)qui évalue le texte passé en paramètre comme s'il s'agissait d'une commande GeoGebra . Cependant, cette méthode nécessite que le nom des commandes soit écrit en anglais. Dans l'exemple ci-dessous, nous utilisons donc la commande
SetCaption(nom anglais de la commande
SoitLégende
) et la commande
If(nom anglais de la commande
Si).
• Ouvrir le panneau des propriétés de la case à cocher.
• Choisir l'onglet Script.
• Dans l'onglet Par actualisation, sélectionner JavaScript dans la liste déroulante.
• Puis, taper la commande :
ggbApplet.evalCommand('SetCaption[case,If[case,"Cacher le point A","Montrer le point A"]]');
• Valider en cliquant sur le bouton
OKOK.
Méthode
JavaScript considère la commande GeoGebra passée en paramètre à l'instruction
evalCommandcomme une chaîne de caractères. En tant que telle, il faut l'encadrer par des guillemets doubles (
"...") ou par des guillemets simples (
'...'). Mais, dans le cas présent, la commande GeoGebra contient elle-même des guillemets doubles et il est donc recommandé ici de se servir des guillemets simples pour encadrer le texte fourni en paramètre à
evalCommand. Néanmoins, il aurait tout de même été possible d'utiliser des guillemets doubles à condition
« d'échapper » ceux présents au sein de la commande GeoGebra en écrivant \" au lieu de " . La commande JavaScript deviendrait ainsi :
384
commissioninterT REM
CE
ggbApplet.evalCommand("SetCaption[case,If[case,\"Cacher le point A\",\"Montrer le point A\"]]");
De la même manière, il est possible d'inclure un guillemet simple au sein d'une chaîne elle-même encadrée par d'autres guillemets simples en tapant \' au lieu de ' , ce qui peut se révéler utile dans le cas où des objets GeoGebra sont nommés à l'aide de la notation « prime ». Par exemple, si on désire modifier la légende d'une case à cocher nommée case' et liée à un point A
', on peut écrire :
ggbApplet.evalCommand('SetCaption[case\',If[case\',"Cacher le point A\'","Montrer le point A\'"]]');
ou bien
ggbApplet.evalCommand("SetCaption[case',If[case',\"Cacher le point A'\",\"Montrer le point A'\"]]");