xiaocainiao 发表于 2023-12-31 20:27:22

请教!如何得到list_box选中的多项内容

刚刚开始研究DCL、请教一下各位大神


如何得到list_box选中的多项内容、用get_tile得到的是列表中对应元素的多个序号、

现在不知道如何拆分这些序号、来获取列表中对应的内容了

有没有大神能提供一下具体的获取函数、感谢

飞雪神光 发表于 2023-12-31 20:39:40

字符串转表或字符串分割 已空格为分隔符用得到的表去nthlist_box中的数据

xiaocainiao 发表于 2023-12-31 20:41:27

飞雪神光 发表于 2023-12-31 20:39
字符串转表或字符串分割 已空格为分隔符用得到的表去nthlist_box中的数据

这个原理我能懂、现在就是不知道具体怎么拆分字符串

飞雪神光 发表于 2023-12-31 20:42:31

(defun str2lst (str del / pos)
        (if (setq pos (vl-string-search del str))
                (cons (substr str 1 pos) (str2lst (substr str (+ pos 1 (strlen del))) del))
                (list str)
        )
)
(mapcar '(lambda (x) (nth x '("数据1" "数据2" "数据3" "数据4" "数据5"))) (mapcar 'atoi (str2lst "0 1 2 4" " ")))

xiaocainiao 发表于 2023-12-31 20:48:15

飞雪神光 发表于 2023-12-31 20:42


谢谢、这回明白怎么操作了

llsheng_73 发表于 2024-1-1 13:03:06

(defun mkdcl(str / dclF Fid dcl)
   (write-line(apply'strcat(if(listp str)str(list str)))
       (setq dclF(vl-filename-mktemp nil nil ".dcl")Fid(open dclF "w")))
   (close Fid)
   (setq dcl(load_dialog dclF))
   (vl-file-delete dclF)dcl)
(defun c:tt( / dcl lst l)
(setq dcl(mkdcl'("ABC:dialog{:list_box{key=\"1\";multiple_select=true;}ok_only;}"))
      lst'("A""B""C""D""E"))
(new_dialog"ABC"dcl)
(start_list"1")(vl-every(function add_list)lst)(end_list)
(action_tile"accept""(setq l(get_tile\"1\"))(done_dialog 1)")
(if(=(start_dialog)1)
    (mapcar(function(lambda(x)(nth x lst)))
                  (read(strcat"("l")")))))
(read(strcat"("(get_tile list_box_name)")"))

xiaocainiao 发表于 2024-1-1 15:15:40

llsheng_73 发表于 2024-1-1 13:03
(read(strcat"("(get_tile list_box_name)")"))

谢谢、我现在用的笨方法、直接搜索空格来拆分的

llsheng_73 发表于 2024-1-1 17:22:16

xiaocainiao 发表于 2024-1-1 15:15
谢谢、我现在用的笨方法、直接搜索空格来拆分的

(read(strcat"("   "0 1 5"")"))=>'(0 1 5)
页: [1]
查看完整版本: 请教!如何得到list_box选中的多项内容