TOGGLE
Cases à Cocher
Allez, on change de sujet on passe aux cases à cocher...
Si je vous dis COCHER et que vous pensez à ça :
À l'inverse des "boutons radio" les "cases à cocher" permettent des choix multiples et ce même si les cases sont dans une même rangée ou une même colonne.
L'exercice va créer une case dont le visuel sera celui-ci :
Une rangée en rose, une colonne en bleu, OK ?
Donc on va pouvoir cliquer dans ces "cases", des variables vont se renseigner en prenant les valeurs de $value, et à la fin du LSP pour vous montrer que les renseignements afférents aux cases cochées sont bien pris en compte, je vais ouvrir une case (alert) qui reprendra les cases réellement cochées au moment de la validation par le bouton OK.
L'aspect de cette case de confirmation sera :
Fichier LSP :
Pour ceux qui copient-collent (vous savez que je pense que c'est une fausse bonne idée) mais je le dépose quand même car je peux comprendre votre impatience :
Fichier DCL :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //--------------------------------------------------------------------------------------------------------- // CaseACocher01 //--------------------------------------------------------------------------------------------------------- MesCases_01 : dialog { key = "Titre"; label = "";//Titre depuis le LSP spacer; : boxed_column { label = "Rangée de CASES"; width = 35; fixed_width = true; : row { : toggle { key = "Case1"; label = "Case 1";} : toggle { key = "Case2"; label = "Case 2";} } spacer; } : boxed_column { label = "Colonne de CASES"; width = 35; fixed_width = true; : toggle { key = "Case3"; label = "Case 3";} : toggle { key = "Case4"; label = "Case 4";} : toggle { key = "Case5"; label = "Case 5";} spacer; } spacer; ok_only; }//Fin de MesCases_01 |
Fichier LSP :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | (defun c:CaseACocher01 ( / Case1 Case2 Case3 Case4 Case5) (princ "\nCase à Cocher est chargé ...")(princ) (setq Dcl_Id (load_dialog "Case-a-Cocher-01")) (new_dialog "MesCases_01" Dcl_Id) (set_tile "Titre" " [da-code] *** Cases à Cocher ") (action_tile "Case1" "(setq Case1 $value)") (action_tile "Case2" "(setq Case2 $value)") (action_tile "Case3" "(setq Case3 $value)") (action_tile "Case4" "(setq Case4 $value)") (action_tile "Case5" "(setq Case5 $value)") (setq Return# (start_dialog)) (unload_dialog Dcl_Id) (setq mes-cases (list nil Case1 Case2 Case3 Case4 Case5)) (setq n 1 mess "") (repeat 5 (if (= "1" (nth n mes-cases)) (setq mess (strcat mess "Case " (itoa n) " ")) ) (setq n (+ 1 n)) ) (alert (strcat "Votre choix est : \n" mess)) (princ) );Fin de c:CaseACocher01 |
La dernière mise à jour du 03 mars 2018 est d'avoir déclaré en variables locales les variables "casex" ce qui permet de relancer le lisp et de recevoir à chaque fois le bon message en fonction des cases cochées sans que le programme ne se "souvienne" du dernier choix lors du lancement précédent.
Je vous prie d'excuser le dérangement pour ceux qui ont essuyé les plâtres mais qui ont eu la gentillesse de m'en prévenir (merci Vincent).
08 février 2018
mise à jour le 01 mars 2018, correction du code LSP,
mise à jour le 03 mars 2018, correction du code LSP, variables locales.