DCL对话框设置三行三列的单选按钮怎么实现
新手小白,请教大家如上问题:即9个单选按钮不是框行或框列排列,而是三行三列均布,如何实现? 不上代码怎么描述:Lbuttons:dialog {label = "buttons";key="title";
:row{
:column{
:toggle{key="slt1"; label="Select1";}
:toggle{key="slt2"; label="Select2";}
:toggle{key="slt3"; label="Select3";}
}
:column{
:toggle{key="slt4"; label="Select4";}
:toggle{key="slt5"; label="Select5";}
:toggle{key="slt6"; label="Select6";}
}
:column{
:toggle{key="slt7"; label="Select7";}
:toggle{key="slt8"; label="Select8";}
:toggle{key="slt9"; label="Select9";}
}
}
: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;}}}}
本帖最后由 桃花源 于 2023-7-7 17:55 编辑
非常感谢热心的朋友,但是我的问题是9个三行三列的radio_button,即只能有一个被选中,而不是图片表示的 本帖最后由 vitalgg 于 2023-7-7 20:08 编辑
那就需要写个回调函数了。
https://atlisp.cn/static/videos/multi-row-column-rb.mp4
(defun c:tt (/ dcl-fp rbn group-rb rb-value)
;;;; Model
(setq rbn 0) ;; 用于记录无线按钮总数
(setq group-rb "slt") ;; 用于控制 rb 系列的组名
(setq rb-value nil) ;; 用于最后选中的 rb 号
;;;; View
;; 生成 DCL 对话框文件,你也可以用自己的方法生成。生成的 dcl 文件在 temp 文件夹下。
(dcl:dialog "buttons")
(dcl:begin-cluster "radio_row" "")
(repeat 3
(progn
(dcl:begin-cluster "column" "")
(repeat 3
(write-line
(strcat
":radio_button{key=\""
group-rb
(itoa (setq rbn (1+ rbn)))
"\"; label=\""
"Select"
(itoa rbn)
"\";action=\"(cb-rb $key)\";}" )
dcl-fp))
(dcl:end-cluster)
))
(dcl:end-cluster)
(dcl:end-dialog str-yes-no)
;;;; Control
;; 控制 多行多列无线按钮的选中与否
(defun cb-rb (key / i)
(print key)
(setq i 0)
(repeat rbn
(if (/= key (strcat group-rb (itoa (setq i (1+ i)))))
(set_tile (strcat group-rb (itoa i)) "0")
(set_tile (strcat group-rb (itoa i)) "1");;
))
(setq rb-value key) ;; 最终选中的 rb
)
;;;; New
(dcl:new "buttons")
;;;; Init 该程序不需要
;;;; Show
(dcl:show)
rb-value
)
运行以上代码需要安装 @lisp 核心及@lisp函数库(函数库会自动下载安装)
安装请至 https://atlisp.cn
页:
[1]