controles dans les scripts

S'il ne s'agit pas vraiment d'une erreur, mais plutôt d'une fonctionnalité que vous souhaiteriez voir dans CaRMetal, c'est ici !
martinAcosta
Messages : 344
Enregistré le : lun. avr. 28, 2014 8:06 pm

controles dans les scripts

Message par martinAcosta »

Bonjour

J'aimerais avoir la possibilité de créer et d'utiliser des controles dans les scripts: cases a cocher, curseurs, case a reponse, bouton interrupteur.

Merci

Martin

Hesperion
Messages : 260
Enregistré le : dim. nov. 11, 2007 2:14 pm
Localisation : Blois

Re: controles dans les scripts

Message par Hesperion »

Voici un code qui permet de créer un curseur, à adapter :

Code : Tout sélectionner

SetHide(Expression("t",0,0,0), true);
t = getC().find("t");
t = getZC().JCM.addSlider(t,250,20,300,29);
t.setShowUnit(false);
t.setMin(0.0);
t.setMax(2.0);
t.setVal(0.0);
t.setTicks(0.2);
t.setSnap(true);
t.setComment("Texte = ");
t.setShowVal(true);
t.setShowTicks(true);

martinAcosta
Messages : 344
Enregistré le : lun. avr. 28, 2014 8:06 pm

Re: controles dans les scripts

Message par martinAcosta »

Merci beaucoup...

Peut on faire de meme pour les cases a cocher et les cases a reponse?

Peut on controler ou changer les valeurs des objets depuis un script? Je pense notemment a decocher une case a cocher...

Hesperion
Messages : 260
Enregistré le : dim. nov. 11, 2007 2:14 pm
Localisation : Blois

Re: controles dans les scripts

Message par Hesperion »

Oui, très certainement mais il faut regarder dans le code source et je n'ai pas un PC digne de ce nom pour y regarder dedans en ce moment.
Est-ce que ça peut attendre début septembre ?

martinAcosta
Messages : 344
Enregistré le : lun. avr. 28, 2014 8:06 pm

Re: controles dans les scripts

Message par martinAcosta »

J'ai regardé un peu, la case à cocher crée une expression qui a pour valeur 0 et possède une propriété v qui dit si elle est cochée ou pas.

Mais je ne sais pas comment modifier cette propriété v depuis le script. J'imagine qu'il faut récuperer l'objet avec un get, puis changer la valeur de v avec un set...

martinAcosta
Messages : 344
Enregistré le : lun. avr. 28, 2014 8:06 pm

Re: controles dans les scripts

Message par martinAcosta »

J'ai tenté de remplacer addSlider par addCheckbox, mais il dit que cette commande n'existe pas. addButton fonctione, mais addTxtfield ne marche pas.

Comment faire pour créer une checkbox ou une case de texte?

martinAcosta
Messages : 344
Enregistré le : lun. avr. 28, 2014 8:06 pm

Re: controles dans les scripts

Message par martinAcosta »

J'ai trouvé la bonne commande, c'est AddChkbox.

Mais maintenant je vois qu'on peut changer la valeur du control, mais pas son aspect: la valeur change à 0 mais la case reste cochée. Et je ne trouve pas comment changer la sélection de la case...

Quelqu'un pourrait m'aider?

Hesperion
Messages : 260
Enregistré le : dim. nov. 11, 2007 2:14 pm
Localisation : Blois

Re: controles dans les scripts

Message par Hesperion »

Ceci fonctionne, et change normalement aussi la valeur du contrôle :

Code : Tout sélectionner

SetHide(Expression("t",0,0,0), true);
t = getC().find("t");
t = getZC().JCM.addChkBox(t,250,20,30,29);
t.setSelected(true); // or false

Hesperion
Messages : 260
Enregistré le : dim. nov. 11, 2007 2:14 pm
Localisation : Blois

Re: controles dans les scripts

Message par Hesperion »

Et à partir de la 3.8.5, ce code fonctionnera pour changer la valeur et l'apparence de la CheckBox :

Code : Tout sélectionner

jcb = getZC().JCM.CPs.get(0); //Ici, la CheckBox en question est le 0-ième contrôle présent dans la figure 
jcb.setSelected(!jcb.getVal());

Avatar du membre
Dibs
Messages : 112
Enregistré le : mar. avr. 24, 2012 2:15 am
Localisation : Pau

Re: controles dans les scripts

Message par Dibs »

Très intéressant.
Pour info, chez moi (version 3.8.3 sur Mac), la ligne 3 du script :

Code : Tout sélectionner

t = getZC().JCM.addSlider(t,250,20,300,29);
fait planter CaRMetal.
Cela dit, en pratique je n'ai pas besoin de ce script, donc perso sensu ce n'est pas un souci.

martinAcosta
Messages : 344
Enregistré le : lun. avr. 28, 2014 8:06 pm

Re: controles dans les scripts

Message par martinAcosta »

Je viens d'essayer le SetSelected et cela marche, mais il ne change pas la valeur; il faut ajouter SetVal pour ce faire. Merci.

Maintenant je voudrais savoir comment procéder pour changer l'état et la valeur d'une case qui n'a pas été créé dans le script, mais directement dans la figure, c'est à dire comment récupérer cet objet dans le script?

Peut être c'est mieux si j'explique ce que j'ai en tête. On a une figure (prise dans le site de CarMetal) qui demande de changer avec un curseur la valeur b de l'équation y=mx+b, pour faire coincider une droite rouge avec une droite bleue. L'élève doit modifier la valeur de b, et une fois il crois avoir la bonne valeur, doit cocher une case "a". Alors il y a un message si c'est correct et apparaît un bouton pour changer la position de la droite bleue. On voudrait alors que en faisant clic sur ce bouton, la case "a" soit déselectionnée (et sa valeur soit 0). Tout cela serait plus simple s'il y avait des conditionnels quand on crée les contrôles, mais en attendant je pense que c'est possible avec un script.

Tout aide bienvenue...

Hesperion
Messages : 260
Enregistré le : dim. nov. 11, 2007 2:14 pm
Localisation : Blois

Re: controles dans les scripts

Message par Hesperion »

Tu pourrais mettre la figure en pièce jointe ? ou le lien ?

martinAcosta
Messages : 344
Enregistré le : lun. avr. 28, 2014 8:06 pm

Re: controles dans les scripts

Message par martinAcosta »

La voici
Fichiers joints
CorteOrdenadaCursor.zirs
L'eleve doit bouger le curseur jusqu'a superposition des droites, et selectionner la case. Si c'est correct, apparait un bouton pour cahnger la droite de base. A ce moment la je voudrais que la case devienne deselectionnee.
(3.43 Kio) Téléchargé 128 fois

Hesperion
Messages : 260
Enregistré le : dim. nov. 11, 2007 2:14 pm
Localisation : Blois

Re: controles dans les scripts

Message par Hesperion »

En retour.
Le script doit fonctionner comme il se doit avec la 3.8.5 (on peut l'installer par dessus la 3.8.4, sans avoir à la désinstaller)

Je me suis permis trois modifications :
[*] la 1re sur la fonction "Reiniciar", j'ai mis un bouton, je trouve ça plus joli ;
[*] la 2e sur la syntaxe du point H, qui était redondante par rapport à l'expression E1 ;
[*] la 3e sur la case "Haz click al terminar" qui disparait maintenant lorsque les deux droites coïncident, sinon on pouvait la décocher puis la recocher, ce qui augmentait artificiellement le nombre d'exercices réussis...
Fichiers joints
CorteOrdenadaCursor_v2.zirs
(3.29 Kio) Téléchargé 117 fois
Modifié en dernier par Hesperion le ven. août 01, 2014 12:14 pm, modifié 1 fois.

Hesperion
Messages : 260
Enregistré le : dim. nov. 11, 2007 2:14 pm
Localisation : Blois

Re: controles dans les scripts

Message par Hesperion »

Et voici même une version 3 où j'ai remplacé le point H par trois expressions.
Fichiers joints
CorteOrdenadaCursor_v3.zirs
(3.44 Kio) Téléchargé 110 fois

Répondre