找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1452|回复: 13

[求助] [求助]:edit_box的合法性和当前怎么设置?

[复制链接]
发表于 2005-8-9 21:32:10 | 显示全部楼层 |阅读模式

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

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

×
比如这个程序:

怎么一打开对话框,光标就在edit_box里,直接可以修改了?

控制edit_box只能输入1-255的正整数,该如何修改?

ys:dialog{label="颜色";
:edit_box{label="颜色代码:";key="yy";edit_width=8;}
spacer_1;
ok_cancel;
}

;;;;

(defun c:ys()
(setvar "cmdecho" 0)
   (setq dcl_id (load_dialog "ys.dcl"))
   (new_dialog "ys" dcl_id)
   (if (= yc nil)
     (setq yc 1)
   )
   (set_tile "yy" (itoa yc))
    (action_tile "accept" "(xxx)(done_dialog 1)")
(setq dd (start_dialog))
(if (= dd 1)
(command "color" yc )
)
(setvar "cmdecho" 1)
(princ)
)
;;;;;
(defun xxx()
(setq yc (atoi(get_tile "yy")))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-8-9 23:07:45 | 显示全部楼层
一打开对话框,光标就在edit_box,只需在(new_dialog "ys" dcl_id)后添加:
(if        yy
        (set_tile "yy" yy)
)
(mode_tile "yy" 2)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-9 23:37:15 | 显示全部楼层
添加了(mode_tile "yy" 2)果然可以,但在edit_box输入了数字为什么不能用回车确定?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-10 00:24:06 | 显示全部楼层
在edit_box输入了数字须添加判断模块,不需要输入回车,只要鼠标离开编辑框,如果非数字则给出提示,并且将光标锁定在编辑框要求重输入。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-10 00:31:14 | 显示全部楼层
最初由 qjcpj 发布
[B]在edit_box输入了数字须添加判断模块。 [/B]


哦,谢谢,
要判断输入的数不可以超过3位(超过3位喇叭会“咚咚……”的叫),不可以大于255或小于1,必须是正整数
有没有这样的例子可以帖上来?
那在edit_box里写完,直接用回车确定(像编辑单行文本那样),怎么改?点确定按钮有点麻烦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-10 01:22:56 | 显示全部楼层
ys:dialog{label="颜色";
:edit_box{label="颜色代码:";key="yy";edit_width=8;allow_accept = true;}
spacer_1;
ok_cancel;
}
在控件中增加allow_accept = true;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-10 07:32:53 | 显示全部楼层
谢谢斑竹,问题解决了

哪位有判断合法性的代码让我参考一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-8-11 11:51:01 | 显示全部楼层
编辑框“lwcolor”的回调函数写成
(action_tile   "lwcolor"   "(ClEditAct $reason)")
调用检验程序如下:

  1.   [FONT=courier new]
  2. ;;;颜色设定编辑框对应程序,检查输入数值是否合法。
  3. (defun ClEditAct (ClWhy / ClVal)
  4. (if (or (= ClWhy 2) (= ClWhy 4))
  5.     (progn (setq ClVal (get_tile "lwcolor"))                           
  6.            (if (or (< (atoi ClVal) 1)
  7.                    (> (atoi ClVal) 255)
  8.                    (wcmatch ClVal "*.*")
  9.                )
  10.             (alert "只能输入1-255之间的整数")
  11.            )
  12.     )
  13.   )
  14. [/FONT]


还可以在后面再加入比如自动调用标准CAD选色卡acad_colordlg等,就看楼主自己的想法了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-8-11 12:56:52 | 显示全部楼层
xdtoolbox -> dcl_lib.lsp

  1. ($xdrx_load "xdlsp.lsp")
  2. (defun $XDDCL_AddList (key val item)
  3.   (start_list key)
  4.   (foreach n val
  5.     (add_list n)
  6.   )
  7.   (end_list)
  8.   (set_tile key (itoa item))
  9. )
  10. (defun $XDDCL_SlideImage (key sldname color / x y)
  11.   (setq x (dimx_tile key)
  12.         y (dimy_tile key)
  13.   )
  14.   (start_image key)
  15.   (fill_image 0 0 x y color)
  16.   (slide_image 0 0 x y sldname)
  17.   (end_image)
  18. )
  19. (defun $XDDCL_ImageFillColor (key color)
  20.   (setq x (dimx_tile key)
  21.         y (dimy_tile key)
  22.   )
  23.   (start_image key)
  24.   (fill_image 0 0 x y color)
  25.   (slide_image 0 0 x y key)
  26.   (end_image)
  27.   (mode_tile key 1)
  28. )
  29. (defun $XDDCL_ImageCrlDisable (key)
  30.   (mapcar
  31.     '(lambda (x)
  32.        ($XDDCL_ImageFillColor x 253)
  33.      )
  34.     key
  35.   )
  36. )
  37. (defun $XDDCL_CtrlEnable (clist)
  38.   (mapcar
  39.     '(lambda (x)
  40.        (mode_tile x 0)
  41.      )
  42.     clist
  43.   )
  44. )
  45. (defun $XDDCL_CtrlDisable (clist)
  46.   (mapcar
  47.     '(lambda (x)
  48.        (mode_tile x 1)
  49.      )
  50.     clist
  51.   )
  52. )

  1. (defun $DCL_Rs_Error ()
  2.   (set_tile "error" "")
  3. )
  4. (defun $DCL_do_set_error (val)
  5.   ($DCL_Rs_Error)
  6.   (set_tile "error" val)
  7. )
  8. ;;检查输入格式
  9. (defun $DCL_CheckIn (input format kk /)
  10.   (if (and (distof input 2) (> (atof input) 0));_自定义检查格式
  11.     (progn ($DCL_Rs_Error) input)
  12.     (progn
  13.       ($DCL_do_set_error (strcat "无效的" format "输入"))
  14.       (mode_tile kk 2)
  15.       nil
  16.     )
  17.   )
  18. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-11 13:50:35 | 显示全部楼层
斑竹的distof用在这确实比我的atoi好,因为用atoi的化如果输入的是字符串返回的就是0,而在CAD中0应该是“随块”。
可问题是如果用户输入“1.0”,这在CAD里是不能作为颜色代码的,而斑竹的程序并没有过滤掉啊。小弟不才,只想到了用(wcmatch ClVal "*.*")这种笨方法,不知高手门有什么好方法,更简单的进行“只能为0-256之间的整数”的过滤。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-8-11 19:41:29 | 显示全部楼层
最初由 精装马甲 发布
[B]斑竹的distof用在这确实比我的atoi好,因为用atoi的化如果输入的是字符串返回的就是0,而在CAD中0应该是“随块”。
可问题是如果用户输入“1.0”,这在CAD里是不能作为颜色代码的,而斑竹的程序并没有过滤掉啊。小?... [/B]

上面的只是一个例子,应该针对自己的 edit_box 来单独写测试函数。比如还可以使用 fix type 等函数测试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-13 01:26:49 | 显示全部楼层
其实关于颜色的设置可以直接调用CAD的标准颜色对话框:
如:
(defun lcolor        ()   
    (setq hidecol (acad_colordlg obscco))
    (if (= hidecol nil)
      (setq hidecol obscco)
      )
  )
以上是从我的一个程序中节录的一段

注:调用前obscco变量必须有值(默认颜色)
可用(getvar "cecolor")获得
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 11:14 , Processed in 0.516192 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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