明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 516|回复: 4

[建筑] DCL对话框设置三行三列的单选按钮怎么实现

[复制链接]
发表于 2023-7-7 14:35 | 显示全部楼层 |阅读模式
新手小白,请教大家如上问题:即9个单选按钮不是框行或框列排列,而是三行三列均布,如何实现?
发表于 2023-7-7 15:32 | 显示全部楼层
不上代码怎么描述
发表于 2023-7-7 16:52 | 显示全部楼层





  1. buttons:dialog {label = "buttons";key="title";
  2. :row{
  3. :column{
  4. :toggle{key="slt1"; label="Select1";}
  5. :toggle{key="slt2"; label="Select2";}
  6. :toggle{key="slt3"; label="Select3";}
  7. }
  8. :column{
  9. :toggle{key="slt4"; label="Select4";}
  10. :toggle{key="slt5"; label="Select5";}
  11. :toggle{key="slt6"; label="Select6";}
  12. }
  13. :column{
  14. :toggle{key="slt7"; label="Select7";}
  15. :toggle{key="slt8"; label="Select8";}
  16. :toggle{key="slt9"; label="Select9";}
  17. }
  18. }
  19. :spacer{} : column {: row { fixed_width = true; alignment = centered; : retirement_button { label ="Yes";key="accept";is_default=true;} :spacer{ width = 2; }:retirement_button {label= "No"; key ="cancel"; is_cancel = true;}}}}

本帖子中包含更多资源

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

x
 楼主| 发表于 2023-7-7 17:51 | 显示全部楼层
本帖最后由 桃花源 于 2023-7-7 17:55 编辑

非常感谢热心的朋友,但是我的问题是9个三行三列的radio_button,即只能有一个被选中,而不是图片表示的

本帖子中包含更多资源

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

x
发表于 2023-7-7 18:35 | 显示全部楼层
本帖最后由 vitalgg 于 2023-7-7 20:08 编辑

那就需要写个回调函数了。


  1. (defun c:tt (/ dcl-fp rbn group-rb rb-value)
  2.   ;;;; Model
  3.   (setq rbn 0) ;; 用于记录无线按钮总数
  4.   (setq group-rb "slt") ;; 用于控制 rb 系列的组名
  5.   (setq rb-value nil) ;; 用于最后选中的 rb 号
  6.   ;;;; View
  7.   ;; 生成 DCL 对话框文件,你也可以用自己的方法生成。生成的 dcl 文件在 temp 文件夹下。
  8.   (dcl:dialog "buttons")
  9.   (dcl:begin-cluster "radio_row" "")
  10.   (repeat 3
  11.     (progn
  12.       (dcl:begin-cluster "column" "")
  13.       (repeat 3
  14.         (write-line
  15.           (strcat
  16.             ":radio_button{key=\""
  17.             group-rb
  18.             (itoa (setq rbn (1+ rbn)))
  19.             "\"; label=\""
  20.             "Select"
  21.             (itoa rbn)
  22.             "\";action=\"(cb-rb $key)\";}" )
  23.           dcl-fp))
  24.       (dcl:end-cluster)
  25.     ))
  26.   (dcl:end-cluster)
  27.   (dcl:end-dialog str-yes-no)
  28.   ;;;; Control
  29.   ;; 控制 多行多列无线按钮的选中与否
  30.   (defun cb-rb (key / i)
  31.     (print key)
  32.     (setq i 0)
  33.     (repeat rbn
  34.       (if (/= key (strcat group-rb (itoa (setq i (1+ i)))))
  35.         (set_tile (strcat group-rb (itoa i)) "0")
  36.         (set_tile (strcat group-rb (itoa i)) "1");;
  37.       ))
  38.     (setq rb-value key) ;; 最终选中的 rb
  39.   )
  40.   ;;;; New
  41.   (dcl:new "buttons")
  42.   ;;;; Init 该程序不需要
  43.   ;;;; Show
  44.   (dcl:show)
  45.   rb-value
  46. )


运行以上代码需要安装 @lisp 核心及@lisp函数库(函数库会自动下载安装)
安装请至 https://atlisp.cn
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 02:48 , Processed in 0.167677 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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