明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3576|回复: 10

[已解答] 无聊,发个对话框玩玩,求高手改进~~~~

[复制链接]
发表于 2014-6-6 13:22:05 | 显示全部楼层 |阅读模式
  1. (defun MAKE-EditDCL  (lst FILENAME / F1 I)
  2. ;
  3. FILENAME 对话框文件保存位置
  4. ;lst 点对表((标签1 . 值1) (标签2 . 值2) (标签3 . 值3) (标签4 . 值4))
  5.   (if  (setq F1 (open FILENAME "w"))
  6.     (progn
  7.       (write-line "EditDCL: dialog{ label = "测试对话框";" F1 )
  8.       (write-line ":boxed_column { label="内容列表";"  F1)
  9.       (setq I 1)
  10.       (foreach n lst
  11.        (progn
  12.           (write-line (strcat  ":edit_box{ label="" (vl-princ-to-string (car n)) ""; value="" (vl-princ-to-string (cdr n)) "";  key = "KEY" (itoa I) "";  }" ) F1 )
  13.           (setq I (1+ I))
  14.        )
  15.       )
  16.       (write-line "}" F1)
  17.       (write-line "ok_only;" F1)
  18.       (write-line "}" F1)
  19.       (close F1)
  20.       t
  21.     )
  22.   )
  23. )

  24. ;测试测试~~~
  25. (defun c:tt()
  26. (setq lst '((标签1 . 值1) (标签2 . 值2) (标签3 . 值3) (标签4 . 值4)))
  27. (MAKE-EditDCL lst "d:\\11.dcl")
  28. )
测试生成的文件:
  1. EditDCL: dialog{ label = "测试对话框";
  2. :boxed_column { label="内容列表";
  3. :edit_box{ label="标签1"; value="值1";  key = "KEY1";  }
  4. :edit_box{ label="标签2"; value="值2";  key = "KEY2";  }
  5. :edit_box{ label="标签3"; value="值3";  key = "KEY3";  }
  6. :edit_box{ label="标签4"; value="值4";  key = "KEY4";  }
  7. }
  8. ok_only;
  9. }


根据点对表,生成相应的对话框.
求改进,如果列表太长,屏幕显示不过来,求以10分栏显示.



本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-6-6 14:39:30 | 显示全部楼层
  1. (defun c:tt (/ ilst)
  2.   (xyp-initSet '(t1 t2 t3 t4) '("值1" "值2" "值3" "值4"))
  3.   (setq ilst '(("t1" "标签1" "str" "8")
  4.                ("t2" "标签2" "str" "8")
  5.                ("t3" "标签3" "str" "8")
  6.                ("t4" "标签4" "str" "8")
  7.                "spacer;"
  8.               )
  9.   )
  10.   (xyp-Dcl-Init Ilst "【测试对话框】" t)
  11.   (princ)
  12. )
发表于 2014-6-6 16:06:29 来自手机 | 显示全部楼层
我想问,你想干嘛?
 楼主| 发表于 2014-6-6 16:57:55 | 显示全部楼层
xyp1964 发表于 2014-6-6 14:39

院长,没解决实际问题啊,我问的是:将文本框每10个分一栏.
举个例子说,如果表数据超过30,看起来就是一个细长细长的对话框,很难看.分栏显示效果会好些~~~

点评

自动排版而已  发表于 2014-6-6 21:33
自动排版而已  发表于 2014-6-6 21:33
发表于 2014-6-6 21:41:29 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2014-6-9 20:40 编辑
  1. (defun MAKE-EditDCL (lst FILENAME / F1 I)
  2. ;FILENAME 对话框文件保存位置
  3. ;lst 点对表((标签1 . 值1) (标签2 . 值2) (标签3 . 值3) (标签4 . 值4))
  4. (if (setq F1 (open FILENAME "w")) (progn
  5.   (write-line "EditDCL:dialog{label="测试对话框";" F1)
  6.   (write-line ":boxed_column{label="内容列表";" F1)
  7.   (write-line ":row{\n:column{" F1)
  8.   (setq I 1)
  9.   (foreach n lst
  10.    (write-line
  11.     (strcat ":edit_box{label="" (vl-princ-to-string (car n))
  12.             "";value="" (vl-princ-to-string (cdr n))
  13.             "";key="KEY" (itoa I) "";}" ) F1)
  14.    (if (= (rem i 10) 0) (write-line "}\n:column{" F1))
  15.    (setq I (1+ I))
  16.   )
  17. (if (/= (rem (1- i) 10) 0) (write-line "}" F1))
  18.   (write-line "}\n}" F1)
  19.   (write-line "ok_only;" F1)
  20.   (write-line "}" F1)
  21.   (close F1)
  22.   t
  23. ))
  24. )

点评

Z版,好像有bug,当I刚好为10的时候,会出错~你测试下看 (defun c:tt() (setq lst '((标签1 . 值1) (标签2 . 值2) (标签3 . 值3) (标签4 . 值4) (标签5 . 值5) (标签6 . 值6) (标签7 . 值7) (标签8 . 值8) (标签9 . .   发表于 2014-6-9 15:09
学习了  发表于 2014-6-8 18:53

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1 很给力!

查看全部评分

 楼主| 发表于 2014-6-7 10:50:30 | 显示全部楼层
rem,Z版就是热心肠,问题解决!
发表于 2014-6-8 16:37:28 | 显示全部楼层
表数据超过30——啥功能这么复杂?
 楼主| 发表于 2014-6-9 09:29:04 | 显示全部楼层
在做城市规划的时候,地块属性包括
地块编号
用地性质名称
用地性质代码
地块面积
容积率(上限)
容积率(下限)
建筑密度(上限)
绿地率(上限)
绿地率(下限)
建筑限高
配套公建
项目类型
项目名称
项目规模
备注
建筑面积
绿地面积
道路面积
人口
户数
机动车位
自行车位
兼容用地
兼容比例
地下开发深度
地下性质
建筑后退(东)
建筑后退(南)
建筑后退(西)
建筑后退(北)
出入口方位
其他
^^^^^^
如果再算上地块的用水\用电\燃气这些指标,你说有可能超过30没?
发表于 2014-6-9 20:40:45 | 显示全部楼层
5楼改了,再试试。
 楼主| 发表于 2014-6-13 17:59:04 | 显示全部楼层
  1. (defun MAKE-EditDCL (lst DlgName FILENAME / F1 I)
  2. ;FILENAME 对话框文件保存位置
  3. ;lst 表
  4. (if (setq F1 (open FILENAME "w")) (progn
  5.   (write-line (strcat "EditDCL:dialog{label="" (car DlgName) "";") F1)
  6.   (write-line (strcat ":boxed_column{label="" (cadr DlgName) "";") F1)
  7.       (foreach n lst
  8.        (progn
  9.           (write-line
  10.                                         (strcat  ":edit_box{ label="" (vl-princ-to-string (car n)) ""; value="" (vl-princ-to-string (cadr n)) "";  key = "" (vl-princ-to-string (caddr n)) "";  }" )
  11.                                         F1 )
  12.        )
  13.       )
  14.       (write-line "}" F1)
  15.       (write-line "ok_only;" F1)
  16.       (write-line "}" F1)
  17.       (close F1)
  18.       t
  19.     )
  20.   )
  21. )

  22. (defun c:tt()
  23. (setq lst '(("标签1" "str" "key1")
  24.              ("标签2" "str" "key2")
  25.              ("标签3" "str" "key3")
  26.              ("标签4" "str" "key4")
  27.              )
  28.   )
  29. (MAKE-EditDCL lst '("【对话框名称】" "列表项目") "d:\\11.dcl" )
  30. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 09:24 , Processed in 0.188376 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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