找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 737|回复: 6

[求助] [求助]:编程的时候被一个问题掐住了,请教大家?急

[复制链接]
发表于 2005-3-6 16:30:13 | 显示全部楼层 |阅读模式

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

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

×
(如图所示)是我仿照天正的轴网命令做的lisp,在对话框输入数据的时候遇到麻烦:例如、我在下开间按钮被选中的时候在编辑框中输入数据,然后当我按其他按钮,(譬如左进深按钮)时,之前输入的数据保存到与下开间相应的变量上;。。。。。。

为此,我为每个按钮到定义了action_tile动作,例如:
(ACTION_TILE "TOP" "(set_tile \"DATA\" top_txt)
                      (mode_tile \"DATA\" 2)"
  )
如果我在action_tile中使用(get_tile  "STYLE")
,则得到的只是当前被选中的按钮的名称,而得不到之前被选中的按钮的名称,所以之前输入的数据就不知道该保存到那个变量上了,

(单选钮组的名称为"STYLE",各个单选钮的key分别为"TOP"、"BUTTOM"、"LEFT"、"RIGHT",(假设他们相对应的变量分别为a、b、c、d),输入编辑框的key为"DATA",请教大家该怎样做?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-7 11:46:36 | 显示全部楼层
你再多引入一个变量纪录上次的Key就可以了。
更换时检查并设定,这样就行了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 13:11:07 | 显示全部楼层
不要见笑,我不是太明白;“怎样记录上次的key?更换时又怎样检查?”,当我切换到其他按钮时,我怎样让程序知道切换前选中的那个按钮的key?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-7 13:46:51 | 显示全部楼层
你可以在 action_tile 后面定义一个子程序而不用直接提取变量值的方式来实现,
子程序的内容为:先提取出前面已经输入的参数,然后再根据需要来修改显示或是定义用于后续动作的变量。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-7 20:48:33 | 显示全部楼层
Just a sample to do what you want. The new variable is named as *prev*

  1. (action_tile "TOP" /"BUTTOM" /"LEFT"/"RIGHT"
  2. "(func-switch $key)"
  3. )
  4. (Defun func-switch(key)
  5. (cond((null *prev*)
  6.           (setq *prev* key)
  7. )
  8. ((= *prev* "TOP") (setq a (get_tile "DATA")))
  9. ((= *prev* "BOTTOM") (setq b (get_tile "DATA")))
  10. ((= *prev* "LEFT") (setq c (get_tile "DATA")))
  11. ((= *prev* "RIGHT") (setq d (get_tile "DATA")))
  12. )
  13. (cond((= key "TOP") (do_if_you_select_TOP))
  14. ((= key "BOTTOM") (do_if_you_select_BOTTOM))
  15. ((= key "LEFT") (do_if_you_select_LEFT))
  16. ((= key "RIGHT") (do_if_you_select_RIGHT))
  17. ....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 22:06:19 | 显示全部楼层
首先谢谢5楼主的热心帮忙!但我有些问题还是不太明白:代码中的*prev*是全局变量?是在action_tile之前通过(get_tile "STYLE")获得?而代码中的(action_tile "TOP" /"BUTTOM" /"LEFT"/"RIGHT"
"(func-switch $key)"
)中的$key的值是还没有切换按钮之前的那个按钮key值?还是切换了之后的按钮key值?还有就是我的目的只是为了取得用户输入到编辑框中的数值,以后绘制轴网的时候用到,可能是我水平不够不能正确理解楼主的意思,又要麻烦5楼主了!
其实我可以用很简单的方法就可以做到(如图所示),不过我是很想知道天正哪里是怎样做到的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-8 10:15:20 | 显示全部楼层
*prev*是个全局变量,用于记录上一次选定的按钮的Key值,你可预至其值为默认的缺省按钮。
(action_tile....)中的$Key是新选定的按钮Key值。所以在后面的函数定义中,要先看*prev*是什么,再执行相应的保存DATA到变量的工作,同时把*prev*置为新选定的按钮。之后才根据新的按钮,调入相应的数据,添到DATA中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 23:00 , Processed in 0.208850 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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