willy95 Posté(e) le 16 mai 2022 Posté(e) le 16 mai 2022 Bonjour les amis, Je bloque sur le rappel d'une valeur dans une boite de dialogue : 1) Je reponds à la question : Genre quel age avez vous ? : 47 2) Je repose une question : Genre quel age avez vous ? : (j'aimerai qu'il me proprose 47) J'ai testé avec Get_tile et set_tile, mais je n'y arrive pas, quelqu'un peut-il m'aider sur ce coup la ? Merci par avance
Luna Posté(e) le 16 mai 2022 Posté(e) le 16 mai 2022 Coucou, Serait-il possible d'avoir le code en question pour savoir de quoi on parle ? 😉 Si tu as tout dans une seule boîte de dialogue, il faut utiliser (action_tile) sur la première question pour utiliser un (set_tile) dans le cas où la seconde question n'est pas encore renseignée. Avec un exemple, cela serait évidemment plus parlant ^^" Bisous, Luna
willy95 Posté(e) le 16 mai 2022 Auteur Posté(e) le 16 mai 2022 Bien sur, mais mon code n'est pas du tout standard, alors accrochez vous... (setq tmpnumlot (vl-filename-mktemp "Questionnumlot.dcl") file (open tmpnumlot "w")) (write-line "Questionnumlot : dialog { key = \"Titrenumlot\"; label = \"\"; initial_focus = \"Listnumlot\"; spacer; : row { : edit_box { label = \"Saisir le Numéro de Lot :\"; key = \"List2\"; height = 1; edit_width = 26; fixed_width = true; alignment = left;}} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmpnumlot)) (new_dialog "Questionnumlot" Dcl_Id) (set_tile "Titrenumlot" "Saisir un Numéro de Lot") (set_tile "numlot" "0") (action_tile "Listnumlot" "(setq Lot (nth (atoi $value) listnumlot))") (IF (= List2 nil) (setq ni 0)) (action_tile "List2" "(setq Lot $value)") (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmpnumlot)
Luna Posté(e) le 17 mai 2022 Posté(e) le 17 mai 2022 Coucou, Alors j'ai un peu de difficulté à comprendre la construction de la boîte de dialogue.. Citation A dialog is the tile that defines the dialog box. Supported Platforms: Windows and Mac OS Windows : dialog { initial_focus label value } L'aide d'AutoCAD indique que la {Dialog Tile} ne peut pas avoir de 'key associée...Donc pour moi : dialog { key = \"Titrenumlot\"; ne peut pas exister..Il suffit de définir le 'label en dur comme ceci : dialog { label = \"Saisir un NUméro de Lot\"; et de supprimer la ligne (set_tile "Titrenumlot" "Saisir un Numéro de Lot") Après quelques tests, ta méthode fonctionne, mais je ne comprend pas pourquoi tu te compliques la vie ainsi ^^" Ensuite je ne vois qu'une seule {edit_box} dans ta boîte de dialogue, et non deux. Il n'y a donc qu'une seule Tile, qui possède la key 'List2. Donc ma question c'est : où sont les key que tu définis avec (set_tile), nommé 'Listnumlot et 'numlot ? Je pense que pour avoir 2 {edit_box}, comme tu le demandes dans ton premier post, il faudrait écrire quelque chose dans le genre : (setq tmpnumlot (vl-filename-mktemp "Questionnumlot.dcl") file (open tmpnumlot "w")) (write-line "Questionnumlot : dialog { label = \"Saisir un Numéro de Lot\"; initial_focus = \"List1\"; spacer; : edit_box { label = \"Saisir un Numéro de Lot :\"; key = \"List1\"; height = 1; edit_width = 26; fixed_width = true; alignment = left;} : edit_box { label = \"Saisir le Numéro de Lot :\"; key = \"List2\"; height = 1; edit_width = 26; fixed_width = true; alignment = left;} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmpnumlot)) (new_dialog "Questionnumlot" Dcl_Id) (set_tile "List1" "0") (action_tile "List1" "(if (= \"\" (get_tile \"List2\")) (set_tile \"List2\" $value))") (action_tile "accept" "(setq Lot (get_tile \"List2\")) (done_dialog)") (action_tile "cancel" "(done_dialog)") (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmpnumlot) Je ne sais pas si cela correspond à ce que tu désires, mais c'est ce qui se rapproche le plus de ce que j'ai compris de ton premier post 😉 Bisous, Luna
willy95 Posté(e) le 17 mai 2022 Auteur Posté(e) le 17 mai 2022 Merci beaucoup Luna pour ton temps passée à chercher à me comprendre pour me faire avancer dans mon problème, il est vrai qu'il est difficile pour moi d'exprimé mon utilité à ces étranges lignes de codes, je cherche simplement à proposer la valeur précédente par défaut car je saisie énormément de fois le même numéro de lot. En validant directement par "OK" la valeur de ma dernière variable saisie est bien conservé mais j'aimerai juste affiché cette valeur. Merci encore et désolé pour mon manque d'expression. Je vais faire plein de tests pour essayer mais ne vous embêter plus avec mon sujet.
Luna Posté(e) le 17 mai 2022 Posté(e) le 17 mai 2022 Tu ne me déranges absolument pas, il n'y a aucune honte à avoir si ta logique n'est pas comme la mienne ! Au contraire chat signifie que tu penses par toi-même et que tu cherches tes propres solutions 😜 Cependant je n'arrive pas à comprendre ce que tu entends par Il y a 2 heures, willy95 a dit : je cherche simplement à proposer la valeur précédente par défaut Parce qu'en ouvrant ta boîte de dialogue, il n'y a qu'une seule edit_box... Donc tu veux dire dans le cas où la boîte de dialogue est ouverte plusieurs fois ? Si c'est bien cela, il faut faire la différence entre : 1°) la boîte de dialogue est ouverte plusieurs fois durant la même commande (mais entre deux commande, la valeur est oubliée) 2°) la boîte de dialogue est ouverte plusieurs fois sur un même dessin (mais entre deux dessins, la valeur n'est pas partagée) 3°) la boîte de dialogue est ouverte plusieurs fois et je désire conserver ma valeur précédente à chaque nouvelle ouverture de la boîte de dialogue Dans le cas numéro 1, alors cela signifie que l'ouverture de ta boîte de dialogue est associée à une fonction nommée, que tu appelles via un (while) ou autre type de boucle. Il te faut alors prévoir à minima un argument pour ta fonction de BdL pour définir la valeur par défaut via (set_tile "List2" (cond (arg1) ("")) et ta fonction doit renvoyer la valeur contenue par List2 en fin d'exécution Dans le cas numéro 2, alors cela signifie qu'il faut que tu utilises une variable globale (donc sa valeur n'est pas remise à zéro à la fin du programme) et que, comme pour le cas n°1, tu définisses ton edit_box comme ci-dessus. Dans le cas numéro 3, alors tu peux utiliser la fonction (setenv) et (getenv) pour créer des variables qui sont partagées entre tous tes dessins, et donc tu définis ton edit_box ainsi (set_tile "List2" (cond ((getenv "NumLot")) (""))) en pensant à créer en premier lieu la variable "NumLot" comme suit (if (null (getenv "NumLot")) (setenv "NumLot" "0")) (j'ai pris "0" comme valeur par défaut, libre à toi de mettre la valeur que tu veux, et le nom de variable qui te plaît, évidemment !) Bisous, Luna 1
willy95 Posté(e) le 17 mai 2022 Auteur Posté(e) le 17 mai 2022 Merci Beaucoup Luna, je test, complète tes lignes et informations super bien expliquées, bien que sans résultat je persévère et reviendrai une fois obtenue un résultat concluant. Merci beaucoup
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant