明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1976|回复: 2

[已解答] 动态DCL页面如何实现左右两列或多列显示?

[复制链接]
发表于 2014-9-19 22:55:09 | 显示全部楼层 |阅读模式
本帖最后由 Kye 于 2014-9-19 23:00 编辑

请教各位大侠,有很多数据,动态DCL页面一列显示不开,希望多列显示,图片为下面程序运行结果:boxed_column没有分成两列而还是两行?前一个程序为转为LISP前的DCL,请哪位能否提供个类似例子学习下,谢谢!

  1. choice : dialog {label = "test" ;

  2.                                                    :boxed_row {            
  3.                                                                          :row    { //:boxed_column//:boxed_row


  4.                                                                                         :edit_box { label="【位】";width=6;key="editpartname01";}
  5.          

  6.                                                                                         }
  7.            
  8.                                                                         }
  9.                                                       spacer;

  10.       
  11.                                                      ok_cancel ;
  12.                                        }



  1. (defun c:test  (/ CAVLST CAVLST1 EDITPARTLST01 FNAME FN DCL_ID RESULT)
  2.   
  3. (setq Cavlst '( "a0" "a1" "a2" "a3""a4" "a5" "a6"))
  4.   
  5. (setq Cavlst1 '( ("a0" "a1" "a2" "a3")("a4" "a5" "a6" )));_将Cavlst分成两个表


  6.   (setq editpartlst01 '(("a1c1"); "a1c2" "a1c3")
  7.           ("a2c1" "a2c2"); "a2c3")
  8.           ("a3c1" "a3c2" "a3c3")
  9.                )
  10. )

  11.   

  12. ;__________________________________________________________________________
  13. (setq fname (vl-filename-mktemp nil nil ".dcl"))
  14. (setq fn (open fname "w"))



  15.                  (write-line "choice : dialog {label = \"test\" ;" fn)

  16. (foreach Cavlst2 Cavlst1 (if Cavlst2
  17.             (progn  (write-line "     :boxed_column  {             " fn)
  18.           (foreach n Cavlst2 (if n (progn
  19.   
  20.                   (write-line "               :row{ //:boxed_column//:boxed_row" fn)
  21.                  (write-line (strcat "        :edit_box { label=" (addw (strcat n  "【位】"))";width=6;key="(addw (strcat "editpartname01" n) ) ";}" )fn)
  22.                  (write-line "                 }" fn)

  23.                 );_progn
  24.                    );_if
  25.             );_内层foreach
  26.          
  27.             (write-line "             }" fn)
  28.           );_progn
  29.         );_if
  30.   );_外层foreach

  31.                 (write-line "      ok_cancel ;" fn)
  32.                 (write-line "    }" fn)


  33. (close fn)
  34. (setq fn (open fname "r"))
  35. (setq dcl_id (load_dialog fname))
  36. ;____________________________________________________________________________
  37.   
  38.   
  39.   
  40.   (if (not (new_dialog "choice" dcl_id))
  41.     (exit)
  42.   )


  43.   (foreach n Cavlst (if n
  44.           (set_tile (strcat "editpartname01" n) (nth 0 (nth 0 editpartlst01)) )
  45.          )     
  46.             
  47.   )         

  48.   (action_tile "accept" "(done_dialog 1)")
  49.   (action_tile "cancel" "(done_dialog 0)")
  50.   (setq result (start_dialog))
  51.   (unload_dialog dcl_id)


  52.   (if (= 1 result)
  53.     (alert
  54.       (strcat "NIHAO! ")
  55.     )
  56.   )
  57.   ;; do your mojo here
  58.   (princ)
  59. )
  60. (princ "\n *****c: test ()** ")


  61. (defun addw(a / );_将\加到字符两侧

  62. (strcat "\"" a "\"")

  63. )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-9-20 08:37:50 | 显示全部楼层
  1. (defun c:test  (/ CAVLST CAVLST1 EDITPARTLST01 FNAME FN DCL_ID RESULT)
  2.   (setq Cavlst '( "a0" "a1" "a2" "a3""a4" "a5" "a6"))
  3.   (setq Cavlst1 '( ("a0" "a1" "a2" "a3")("a4" "a5" "a6" )));_将Cavlst分成两个表
  4.   (setq editpartlst01 '(("a1c1"); "a1c2" "a1c3")
  5.           ("a2c1" "a2c2"); "a2c3")
  6.           ("a3c1" "a3c2" "a3c3")
  7.                )
  8.   )
  9. ;__________________________________________________________________________
  10. (setq fname (vl-filename-mktemp nil nil ".dcl"))
  11. (setq fn (open fname "w"))
  12. (write-line "choice:dialog {label="test" ;" fn)
  13. (write-line " :row{" fn)
  14. (foreach Cavlst2 Cavlst1
  15.   (if Cavlst2 (progn
  16.    (write-line "  :boxed_column{" fn)
  17.     (foreach n Cavlst2
  18.      (if n (progn
  19.       (write-line "   :row{ //:boxed_column//:boxed_row" fn)
  20.       (write-line
  21.        (strcat "    :edit_box {label=" (addw (strcat n  "【位】"))
  22.        ";width=6;key="(addw (strcat "editpartname01" n) ) ";}" )fn)
  23.       (write-line "   }" fn)
  24.      ));_if
  25.     );_内层foreach
  26.     (write-line "  }" fn)
  27.   ));_if
  28. );_外层foreach
  29. (write-line " }" fn)
  30. (write-line " ok_cancel;" fn)
  31. (write-line "}" fn)
  32. (close fn)
  33. (setq fn (open fname "r"))
  34. (setq dcl_id (load_dialog fname))
  35. ;____________________________________________________________________________
  36.   (if (not (new_dialog "choice" dcl_id)) (exit))
  37.   (foreach n Cavlst
  38.    (if n (set_tile (strcat "editpartname01" n) (caar editpartlst01)))   
  39.   )
  40.   (action_tile "accept" "(done_dialog 1)")
  41.   (action_tile "cancel" "(done_dialog 0)")
  42.   (setq result (start_dialog))
  43.   (unload_dialog dcl_id)
  44.   (if (= 1 result) (alert (strcat "NIHAO! ")))
  45.   ;; do your mojo here
  46.   (princ)
  47. )
  48. (princ "\n *****c: test ()** ")
  49. (defun addw(a / );_将\加到字符两侧
  50. (strcat """ a """)
  51. )

评分

参与人数 1明经币 +1 收起 理由
Kye + 1 很给力!

查看全部评分

 楼主| 发表于 2014-9-20 20:13:04 | 显示全部楼层
ZZXXQQ 发表于 2014-9-20 08:37

来明经学习Z版的程序最多,能得到Z版的亲自指导,深感荣幸,谢谢Z版
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 04:15 , Processed in 0.177138 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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