DCL-05

RADIO_BUTTON


Exemple 5
Boutons Radio


Dans cet exemple je vais expliquer comment créer deux lignes de deux boutons radio qui vont lancer une routine ou une autre suivant les deux choix de l'utilisateur.
Je reprends le DCL-04 qui réalise le dessin d'une ligne ou le dessin d'un cercle et je lui rajoute une ligne de boutons radio pour forcer la couleur de dessin, le visuel sera celui-ci :

 

On se retrouve dans le cas cité dans "théorie" avec la possibilité d'allumer deux boutons radio mais puisqu'ils ne sont pas dans une même rangée il n'y aura pas de souci.


Le fichier DCL :

Vous remarquerez que j'ai choisi une autre forme de formatage, à vous de choisir celle qui vous conviendra le mieux...

 

 


Le fichier LSP :


Comme dans DCL-04 un (cond) va réagir en fonction de la valeur de Radio1 pour choisir la routine à lancer, ligne ou cercle mais en plus dans chaque routine un code 62 reprend (sous forme d'entier (integer)) la variable Radio2 qui est le numéro de la couleur choisie, regardez les lignes 36 et 50.

Il n'y a toujours qu'un bouton OK pour validation.


Le fichier DCL :

La configuration de mon site internet présente quelques défauts pour ce qui de l'apparence des lignes de code DCL, il transforme les "point-virgule" de fin de ligne du DCL en commentaires LISP, je tente d'y remédier pour le confort de lecture.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//---------------------------------------------------------------------------------------------------------
// Boutons_radio
//---------------------------------------------------------------------------------------------------------
Boutons_radio : dialog {
 key = "Titre";
 label = "";//Title$ from lsp file
 spacer;
 : boxed_radio_row { key = "Radio1"; label = "Choix de dessin"; width = 40;
 : radio_button { key = "L"; label = "Ligne"; }
 : radio_button { key = "C"; label = "Cercle"; }
 }
 : boxed_radio_row { key = "Radio2"; label = "Couleur"; width = 40;
 : radio_button { key = "1"; label = "Rouge"; }
 : radio_button { key = "5"; label = "Bleu"; }
 }
 spacer;
 ok_only;
}//Boutons_radio

Le 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
;------------------------------------------------------------------------
 ;c:Boutons-radio - Dialogue avec deux boutons radio
 ;pour choix de dessin Ligne ou Cercle
 ; Syntaxe: Boutons-radios
 ;------------------------------------------------------------------------
(defun c:Boutons-radio (/ Dcl_Id Radio1 Return)
 (princ "\n[www.da-code] Boutons Radio \n")
 (princ)
 (if (not *MyRadios@)
 (setq *MyRadios@ (list nil "" ""))
 ) ;if
 (setq Radio1 (nth 1 *MyRadios@))
(setq Dcl_Id (load_dialog "BoutonsRadio.dcl"))
 (new_dialog "Boutons_radio" Dcl_Id)
(set_tile "Titre" "[www.da-code] Boutons Radio plus")
 (set_tile "Radio1" Radio1)
(action_tile "Radio1" "(setq Radio1 $value)")
 (action_tile "Radio2" "(setq Radio2 $value)")
(setq Return (start_dialog))
 (unload_dialog Dcl_Id)
 (setq *MyRadios@ (list nil Radio1))
(cond
((= Radio1 "L") (ligne-boutonradio))
((= Radio1 "C") (cercle-boutonradio))
) ;_ Fin de cond
(princ)
) ;defun c:Boutons-radio
;--------------------------------------------------------------
(defun Ligne-BoutonRadio (/ p1 p2)
 (setq p1 (getpoint "\Point de départ\n")
 p2 (getpoint p1 "\Point d'arrivée\n")
 ) ;_ Fin de setq
 (entmake (list (cons 0 "LINE")
 (cons 10 p1)
 (cons 11 p2)
 (cons 62 (atoi Radio2))
 ) ;_ Fin de list
 ) ;_ Fin de entmake
 (princ)
) ;fin de defun c:Ligne-BoutonRadio
 ;---------------------------------------------------------------------
(defun Cercle-BoutonRadio (/ p1 p2 ray)
(setq p1 (getpoint "\Centre du cercle\n")
p2 (getpoint p1 "\Rayon\n")
ray (distance p1 p2)
 ) ;_ Fin de setq
 (entmake (list (cons 0 "CIRCLE")
 (cons 10 p1)
 (cons 40 ray)
 (cons 62 (atoi Radio2))
 ) ;_ Fin de list
 ) ;_ Fin de entmake
 (princ)
) ;fin du defun c:Cercle-BoutonRadio

 


Haut de page

Retour à "Exercices DCL"


29 janvier 2018