找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3083|回复: 8

[求助] [求助]:在LISP下,如何直接获取对话框中下拉选单里的字符串

[复制链接]
发表于 2003-6-8 15:51:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我想直接在对话框的下拉选单popup_list里选择单位名称,然后让LISP直接读取里面的字符串,不用再通过编辑框edit_box了。
如果通过编辑框获取:
   (action_tile "dwmc""(sub_dwmc $value)")
      …… ……
   (defun sub_dwmc(vvs)
                 (set_tile "dw"(nth(atoi vvs)dwmc_list))
      )
      (defun ok_dw()
                  (setq dw (get_tile "dw"))
      )
       popup_list的key="dwmc", edit_box的key="dw".
      则用"-mtext"命令在屏幕上写出的字符串是正常的。但是如果
不用编辑框,用同样的方法则写出来的都是一个阿拉伯数字,资料说明$value的DCL 对象的当前值在list_box和popup_list 下,其值为
选单顺序,怎样才能把这个顺序的数字直接转换成想要的单位名称字符串呢?望各位高手指点迷津!谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-6-8 20:51:52 | 显示全部楼层
(action_tile "dwmc""(Setq dw (nth (read $value) dwmc_list))")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-9 01:28:36 | 显示全部楼层
试试用dcl激活doslib的对话框选取。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-12 11:50:46 | 显示全部楼层
用mmmm朋友的办法,怎么试得到的还是一个数字;斑竹的那一句话,对我等超级菜鸟来说,
具体怎样操作,无从下手。既然我要的效果是不能随便改变单位名称,那把编辑框隐藏起来
不就解决了吗?于是把编辑框的宽度设为零,可是编辑框还存在,再试把宽度值改为一个负
值,ok!一切如我所愿。但愿这个绕弯的办法对遇到我同样的问题的初级编程的朋友有所帮助
也再请高手指点一个不用经过编辑框的真正的具体的办法。谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-12 13:38:32 | 显示全部楼层
把你的代码全部贴上来看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-12 17:51:12 | 显示全部楼层
参考这个改改你的程序:
(setq alist (list "0" "45" "90" "180" "270"))
(if (findfile "dial.dcl")(setq index (load_dialog (findfile "dial.dcl"))))  
    (if (not (new_dialog "dend" index))(exit))
    (start_list "angle")
    (mapcar 'add_list alist)
    (end_list)
   (action_tile "accept"
     "(setq estyle (nth (atoi (get_tile \"etype\")) elist)
              size (nth (atoi (get_tile \"size\")) slist)
               ang (angtof (nth (atoi (get_tile \"angle\")) alist))
                ran (get_tile \"ran\"))
      (done_dialog 1)")
    (action_tile "cancel" "(setq lp 1)(exit)")
    (start_dialog)
    (unload_dialog index)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-6-12 19:31:53 | 显示全部楼层
对话框每个需要交互的控件都应该有一个action_tile激活操作,否则是无效的,而对变量的赋值、取值过程都应该在这个激活操作中,你程序中(setq estyle (nth (atoi (get_tile \"etype\")) elist))应该是激活etype的过程,写成(action_tile "etype" "(setq estyle (nth (atoi (get_tile \"etype\")) elist))"),同样size、angle等控件也应该独立激活,最后激活Ok键:(action_tile "accept" "(done_dialog 1)"),然后在主程序中对done_dialog值进行判别,为1进行,0取消,其它则进行相应操作。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-13 13:36:34 | 显示全部楼层
实际上,在程序中使用变量和Edit_box来传递变量的结果应该是一样的。没有道理会不同。
代码为:
(action_tile "list" "(alert (nth (read $Value) listX))")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-26 21:20:42 | 显示全部楼层
问题顺利解决,感谢各位的帮助,我感觉这真是一个好网站!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 14:25 , Processed in 0.343684 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表