明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wzg356

[函数] (20230213更)通用DCL输入框----魔法交互,5种控件,edit_box数据检查现....

[复制链接]
发表于 2023-2-1 11:23 | 显示全部楼层
感谢分享,学习研究一下
发表于 2023-2-1 19:19 | 显示全部楼层

谢谢楼主分享
发表于 2023-2-1 19:53 | 显示全部楼层
本帖最后由 zml84 于 2023-2-1 19:57 编辑

凑个热闹
https://mp.weixin.qq.com/s/56eTQA4wHbpTKMgzelIBCQ

  1. ;;;========================================================*
  2. ;;;测试
  3. (defun C:TT ()
  4.     (ZL-INPUTBOX
  5.         "身份验证"
  6.         '(("editbox" "用户名:" "USER" "20")
  7.             ("editbox" "口 令:" "" "20")
  8.             ("popup_list"
  9.                 "类 型:"
  10.                 ("受限用户""一般用户" "超级管理员")
  11.                 "20"
  12.             )
  13.             ;;
  14.             ("spacer_1")
  15.             ("text" "这是一个说明文本。")   
  16.             ("说明" "更多说明..." "说明信息1\n说明信息2\n...")
  17.         )
  18.     )
  19. )


---------------------------------------------------------------------
  1. ;;;=================================================================*
  2. ;;;    定义通用数据输入窗体                                         *
  3. ;;;                                                                 *
  4. ;;;=================================================================*
  5. ;|注意,调用参数均为字符串形式                                     *
  6. ;;;返回:字符串列表                                                 *
  7. ;;;日期:zml84 于 2012-06-20
  8. ;;;-----------------------------------------------------------------*
  9. ;;;示例:                                                           *
  10.   (ZL-INPUTBOX                                                *
  11.       "显示的对话框名称"                                      *
  12.       '(("editbox"                                            *
  13.          "editbox显示的说明"                                  *
  14.          "editbox显示值"                                      *
  15.          "20"                                                 *
  16.         )                                                     *
  17.         ("popup_list"                                         *
  18.          "popup_list显示的说明"                               *
  19.          ("列表值1" "列表值2" "...")                          *
  20.          "20"                                                 *
  21.         )                                                     *
  22.        )                                                      *
  23.   )                                                           *
  24. ;;;=================================================================*
  25. ;;|;
  26. (vl-load-com)
  27. ;;;=================================================================*
  28. (defun ZL-INPUTBOX (STR_DIANAME      LST       /
  29.         LIST->DCL  TEMPFILENAME       F1
  30.         STR_JG     I    N       DCLID
  31.         LST_RESULT str_sm key_sm
  32.        )
  33.     ;;==================================================================*
  34.     ;;功能:根据控件信息表,生成DCL语言的文本                           *
  35.     ;;      注意,调用参数均为字符串形式                                *
  36.     ;;示例:(list->dcl '( "editbox" "editbox显示的说明" "editbox显示值"  "20") 100)
  37.     ;;  (list->dcl '( "popup_list" "popup_list显示的说明" ("列表值1" "列表值2" "...")"20") 101)
  38.     ;;  (list->dcl '( "popup_list" "popup_list显示的说明" "列表值1\\n列表值2\\n..."  "20") 102)
  39.     ;;返回:与控件对应的dcl文本
  40.     ;;日期:zml84 于 2012-06-20
  41.     (defun LIST->DCL (LST KEY_I / X)
  42.   (cond
  43.       ;;
  44.       ((wcmatch (car LST) "ZML84*")
  45.     (strcat
  46.         ":button{"
  47.         (strcat "\nlabel=\""
  48.           (nth 0 LST)
  49.           "\";"
  50.           "\nis_enabled = false;"
  51.         )
  52.         "\n}\n"
  53.     )
  54.       )
  55.       ;;标准按钮,点击后显示更多说明信息。
  56.       ;;格式:("说明"  按钮名称   信息)
  57.       ;;示例:("说明" "更多说明..." "说明信息1\n说明信息2\n...")
  58.       ((wcmatch (car LST) "说明")
  59.           (setq str_sm (nth 2 lst));_设置说明文本,供后面回调用
  60.     (strcat
  61.         ":button{"
  62.         (strcat "\nlabel=\""
  63.           (nth 1 LST)
  64.           "\";"
  65.           (strcat "\nkey =\"KEY_SM\";")
  66.           "\nis_enabled = true;"
  67.         )
  68.         "\n}\n"
  69.     )
  70.       )
  71.       ;;
  72.       ((= (car LST) "editbox")
  73.        (strcat
  74.      ":edit_box{"
  75.      "\nallow_accept = true ;"
  76.      (strcat "\nedit_width ="
  77.        (nth 3 LST)
  78.        ";"
  79.      )
  80.      "\nfixed_width = true ;"
  81.      (strcat "\nkey =\"" (itoa KEY_I) "\";")
  82.      (strcat "\nlabel=\""
  83.        (nth 1 LST)
  84.        "\";"
  85.      )
  86.      (strcat "\nvalue=\""
  87.        (nth 2 LST)
  88.        "\";"
  89.      )
  90.      "\n}\n"
  91.        )
  92.       )
  93.       ;;
  94.       ((= (car LST) "popup_list")
  95.        (strcat
  96.      ":popup_list{"
  97.      (strcat "\nwidth ="
  98.        (nth 3 LST)
  99.        ";"
  100.      )
  101.      (strcat "\nlabel=\""
  102.        (nth 1 LST)
  103.        "\";"
  104.      )
  105.      (strcat "\nkey =\"" (itoa KEY_I) "\";")
  106.      (cond
  107.          ((= (type (nth 2 LST)) 'STR)
  108.           (strcat "\nlist=\""
  109.             (nth 2 LST)
  110.             "\";"
  111.           )
  112.          )
  113.          ((= (type (nth 2 LST)) 'list)
  114.           (strcat
  115.         "\nlist=\""
  116.         (apply
  117.             'strcat
  118.             (mapcar
  119.           '(lambda (X)
  120.                (strcat "\\n"
  121.                  (vl-princ-to-string X)
  122.                )
  123.            )
  124.           (nth 2 LST)
  125.             )
  126.         )
  127.         "\";"
  128.           )
  129.          )
  130.      ) ;_结束 cond
  131.      "\n}\n"
  132.        )
  133.       )
  134.       ;;
  135.       ((= (car LST) "text")
  136.        (strcat
  137.      ":text{"
  138.      (strcat "\nlabel=\""
  139.        (nth 1 LST)
  140.        "\";"
  141.      )
  142.      "\n}\n"
  143.        )
  144.       )
  145.       ;;
  146.       ((= (car LST) "spacer_1")
  147.     (strcat  "\n"
  148.       (nth 0 LST)
  149.       ";\n"   
  150.     )
  151.       )
  152. ;;;      ((/= (LIST->DCL (cons "editbox" LST) KEY_I) "")
  153. ;;;       (LIST->DCL (cons "editbox" LST) KEY_I)
  154. ;;;      )
  155.       (t "")
  156.   ) ;_结束 cond
  157.     ) ;_结束defun
  158.     ;;==================================================================*
  159.     ;;功能:定义按下确定按钮后的操作
  160.     (defun GETINPUT (LEN / I N TMP)
  161.   (setq RESULTLIST '()
  162.         I     0
  163.   )
  164.   (repeat  (length LST)
  165.       (setq N (nth I LST))
  166.       (cond
  167.     ;;
  168.     ((= (car N) "editbox")
  169.      (setq LST_RESULT
  170.         (cons (get_tile (itoa I)) LST_RESULT)
  171.      )
  172.     )
  173.     ;;
  174.     ((= (car N) "popup_list")
  175.      (setq TMP (nth 2 N))
  176.      ;;tmp有两种格式:字符形式的 和 表形式
  177.      ;;如果是字符格式的,就转换为表(以\n分割)
  178.      (cond
  179.          ((= (type (nth 2 N)) 'STR)
  180.           (setq TMP "*INPUTBOX函数 有待完善*")
  181.          )
  182.          ((= (type (nth 2 N)) 'list)
  183.           (setq TMP (nth (atoi (get_tile (itoa I))) TMP))
  184.          )
  185.      )
  186.      (setq LST_RESULT
  187.         (cons TMP LST_RESULT)
  188.      )
  189.     )
  190.     ;;

  191.     ;;
  192.     (t
  193.      (setq LST_RESULT
  194.         (cons NIL LST_RESULT)
  195.      )
  196.     )
  197.       )
  198.       (setq I (1+ I))
  199.   )
  200.   (setq LST_RESULT (reverse LST_RESULT))
  201.     ) ;_结束defun
  202.     ;;==================================================================*
  203.     (setq TEMPFILENAME (vl-filename-mktemp "dcltmp.dcl"))
  204.     (setq F1 (open TEMPFILENAME "w"))

  205.     ;;组织头部
  206.     (setq STR_JG (strcat
  207.          "InputBox:dialog {"
  208.          (strcat "\nlabel =\"" STR_DIANAME "\";")
  209.      )
  210.     )
  211.     ;;组织正文
  212.     (setq I 0)
  213.     (repeat (length LST)
  214.   (setq N (nth I LST))
  215.   (setq STR_JG (strcat STR_JG
  216.            (LIST->DCL N I)
  217.          )
  218.   )
  219.   (setq I (1+ I))
  220.     )

  221.     ;;组织按钮、
  222.     (setq STR_JG
  223.        (strcat
  224.      STR_JG
  225.      "\nspacer_0;"
  226.      "\nok_cancel;"
  227.      ;;zml个人信息
  228.      "\n:button{"
  229.      "\nlabel=\"ZML84作品,必属精品。\";"
  230.      "\nis_enabled = false;\n}\n"
  231.      ;;
  232. ;;;     "\n:text{"
  233. ;;;     "\nlabel=\"ZML84作品,必属精品。\";"
  234. ;;;     "\nis_enabled = false;"   
  235. ;;;     "\n}\n"
  236.      ;;对话框结束
  237.      "\n}\n"
  238.     )
  239.     )
  240.     ;;写入文件
  241.     (princ STR_JG F1)
  242.     ;;关闭文件
  243.     (close F1)
  244.     (setq DCLID (load_dialog TEMPFILENAME))
  245.     (if  (not (new_dialog "InputBox" DCLID ""))
  246.   (progn (alert "对话框加载失败!") (exit))
  247.     )
  248.     (action_tile
  249.   "accept"
  250.   "(GetInput  Lst ) (done_dialog 1)"
  251.     )
  252.     (if STR_SM
  253.     (action_tile
  254.   "KEY_SM"
  255.   "(if zl-msgbox (ZL-msgbox nil \"i\" STR_SM 0)(ALERT STR_SM))"
  256.     ))
  257.     (start_dialog)
  258.     (unload_dialog DCLID)
  259.     (vl-file-delete TEMPFILENAME)
  260.     ;;返回
  261.     LST_RESULT
  262. )

本帖子中包含更多资源

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

x

评分

参与人数 3明经币 +3 收起 理由
bssurvey + 1 赞一个!
USER2128 + 1 赞一个!
wzg356 + 1 很给力!

查看全部评分

 楼主| 发表于 2023-2-2 13:19 | 显示全部楼层

多年前就在你的博客上掏了不少干货,包含这个。。。。
发表于 2023-2-3 07:22 来自手机 | 显示全部楼层
wzg356 发表于 2023-2-2 13:19
多年前就在你的博客上掏了不少干货,包含这个。。。。

相互学习,共同进步!
发表于 2023-2-3 08:04 | 显示全部楼层
能给个完整的示例吗?大佬
 楼主| 发表于 2023-2-9 23:10 | 显示全部楼层
本帖最后由 wzg356 于 2023-2-10 12:55 编辑


20230209更,输入框数据检查改为实时现场纠错,免币源码在http://bbs.mjtd.com/forum.php?mo ... =1&extra=#pid908231“通用函数-坐标处理.lsp”里面,那个帖子的所有程序都直接用的这个通用输入框

评分

参与人数 1明经币 +1 金钱 +20 收起 理由
tigcat + 1 + 20 很给力!

查看全部评分

 楼主| 发表于 2023-2-13 22:08 | 显示全部楼层
20230213更,增加为5种控件,改进应用体验,还可与图面交互
发表于 2023-2-22 12:37 | 显示全部楼层
wzg356 发表于 2023-2-13 22:08
20230213更,增加为5种控件,改进应用体验,还可与图面交互

谢谢大佬分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-11 22:05 , Processed in 0.151163 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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