找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 945|回复: 9

[求助] [求助]:关于dcl的问题 action_tile 为何不能用

[复制链接]
发表于 2004-8-17 09:00:30 | 显示全部楼层 |阅读模式

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

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

×
关于dcl的问题 action_tile 为何不能用
(action_tile "accept" "(getdata)(done_dialog 1)" )
程序中这句不能用,问各位原因
全程序在下

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun getdata ()
  (setq x (atof (get_tile "x")))
  (setq y (atof (get_tile "y")))
)

(defun c:ldcl () ;加dcl   测用
  (setq id (load_dialog "e:\hello.dcl"))
  (if (< id 0)(exit))
  (setq x 0 y 0)
  (if (not (new_dialog "hello" id))(exit))
  (set_tile "x" (rtos x 2 2))
  (set_tile "y" (rtos y 2 2))
  (action_tile "accept" "(setq g 1)" )
  (action_tile "accept" "(getdata)(done_dialog 1)" )
  ;(start_dialog)
  (unload_dialog id)
  (princ)
)   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-17 09:19:32 | 显示全部楼层
You can have only one action for a specific tile, the other one will be overridden.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-17 09:55:16 | 显示全部楼层
将(action_tile "accept" "(setq g 1)" )行去掉后
出现如下错误

;;; 复制到窗口于9:54 上午 8/17/04
(lambda ($KEY $VALUE $DATA $REASON $X $Y)
  (getdata)(done_dialog 1)
  )
;;; 文字结尾

现程序如下
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun getdata ()
(setq x (atof (get_tile "x")))
(setq y (atof (get_tile "y")))
)

(defun c:ldcl () ;加dcl 测用
(setq id (load_dialog "e:\hello.dcl"))
(if (< id 0)(exit))
(setq x 0 y 0)
(if (not (new_dialog "hello" id))(exit))
(set_tile "x" (rtos x 2 2))
(set_tile "y" (rtos y 2 2))
(action_tile "accept" "(getdata)(done_dialog 1)" )
(start_dialog)
(unload_dialog id)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-17 10:21:59 | 显示全部楼层
Your lisp file have no problem at all. Errors might be hidden in your DCL files. Otherwise, try "e:\\hello.dcl"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-17 10:27:36 | 显示全部楼层
dcl如下 hello.dcl,请帮我看下有什么问题

hello: dialog{
label = "Sample dialog box";
: edit_box {
label="&x";
key="x";
edit_width=7;
}
: edit_box {
label="&y";
key="y";
edit_width=7;
}

/*:row {
:spacer{width = 1;}
:button {
key = "accept";
label="ok";
is_default = true;
}
:button {
key = "cancel";
label="cancel";
is_default = true;
}
:spacer{width = 1;}
}*/
ok_cancel;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 11303个

财富等级: 富甲天下

发表于 2004-8-18 10:03:17 | 显示全部楼层
应将(start_dialog)改为(setq ed (start_dialog))。
因为(action_tile "accept" "(getdata)(done_dialog 1)" )中
(done_dialog 1)的参数要赋值给变量才行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-8-19 23:10:17 | 显示全部楼层
看着好像没错

可能
:button {
key = "accept";
label="ok";
is_default = true;
}
:button {
key = "cancel";
label="cancel";
is_default = true;
}
:spacer{width = 1;}
}*/
ok_cancel;


因为ok_cancel 本身就是 "accept"和“cancel"的组合,你相当于写了两遍
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-20 14:55:33 | 显示全部楼层
多谢各位老大,我找到问题了 我对dcl不熟,(start_dialog)处我加了断点,这才出现错误,取消断点后,就正常执行了,问题出在断点的位置不对,几位指出的我也查了,与各位分享,如有不对,还请指出
(setq ed (start_dialog))里设变量ed是为了方便控制或取值 ,如(if (= ed 1)(setq pty y)),就可把输入的y的值放入变量pty.
(done_dialog 1)里的1指的是接受键,如是0指的就是取消键了,和我的错误没关系
至于ok_cancel 本身就是 "accept"和“cancel"的组合这到没事,前面的
/*:row {
:spacer{width = 1;}
:button {
key = "accept";
label="ok";
is_default = true;
}
:button {
key = "cancel";
label="cancel";
is_default = true;
}
:spacer{width = 1;}
}*/ 我用/* */ 注释了 并未执行,也就是说没有执行两遍ok_cancel
最后再次谢谢几位老大的帮助,以后也请多多指教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 10:14 , Processed in 0.237522 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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