328302216 发表于 2014-5-2 16:27:50

DCL对话框鼠标双击添加、删除

在DCL对话框中经常用到双击列表框中的对象添加到另外的列表框中,和双击列表框中的内容删除之!希望高手帮忙改改使得更通用、方便!
;;使用样例(action_tile "List1" "(tt22 $value)")
;;keys1keys2 "List2" 这几个根据使用的实际对话框来改变
(defun tt22(vvs)
(cond((= $reason 4)
        (setq keys2(sjtjdzdlbk keys1 keys2 "List2"))
        )
       ((= $reason 1)())
);;cond
)

;;功能双击下拉列表1中的内容添加到指定下拉列表中
;;lst下拉列表1中的列表内容 如 (setq lst '("线宽种类" "倒角种类" "填充种类"))
;;lst1指定下拉列表内容
;;key指定下拉列表的key值
(defun sjtjdzdlbk(lst lst1 key / sjtjdzdlbk-1);;(sjtjdzdlbk 双击添加到指定列表框)
(setq sjtjdzdlbk-1(nth(atoi vvs)lst))
(setq lst1(cons sjtjdzdlbk-1 lst1))
(start_list key)
(mapcar 'add_list lst1)
(end_list)
lst1
);;使用样例(action_tile "List1" "(tt22 $value)")
;;keys1keys2 "List2" 这几个根据使用的实际对话框来改变
(defun tt22(vvs)
(cond((= $reason 4)
(setq keys2(sjtjdzdlbk keys1 keys2 "List2"))
)
       ((= $reason 1)())
);;cond
)

;;功能双击下拉列表1中的内容添加到指定下拉列表中
;;lst下拉列表1中的列表内容 如 (setq lst '("线宽种类" "倒角种类" "填充种类"))
;;lst1指定下拉列表内容
;;key指定下拉列表的key值
(defun sjtjdzdlbk(lst lst1 key / sjtjdzdlbk-1);;(sjtjdzdlbk 双击添加到指定列表框)
(setq sjtjdzdlbk-1(nth(atoi vvs)lst))
(setq lst1(cons sjtjdzdlbk-1 lst1))
(start_list key)
(mapcar 'add_list lst1)
(end_list)
lst1
)


;;使用样例(action_tile "List1" "(list_sjsc $value)")
(defun list_sjsc(vvs);;(list_sjsc 下拉列表双击删除)
(cond((= $reason 4)
(setq keys1(sjsc_list "List1" keys1));;不要这句把下面progn这段撤销注释同样效果
;;;   (progn    ;;用这段的话就可以不要sjsc_list这个子程序
;;;   (setq list_sjsc-1 (atoi(get_tile "List1")))
;;;   (setq list_sjsc-2(MJ:removeNth list_sjsc-1 keys1))
;;;   (setq keys1 list_sjsc-2)
;;;   (dcl_lbfz "List1" keys1)
;;;   )
       )
       (= $reason 1())
);;cond
);;defun

;;131.2 [功能] 从列表中删除指定的第n个元素
;;index 要删除的第几个元素
;;lst 列表
(defun MJ:removeNth (index lst / c)
(setq c -1)
(apply 'append
   (mapcar '(lambda (x)
      (if(/= (setq c (1+ c)) index)
          (list x)
      )
      )
   lst
   )
)
)

;;函数说明
;;key控件的key值(字符串)
;;lst列表
(defun dcl_lbfz(key lst)
(start_list key);直列表 {"List4"} 初始化
(mapcar 'add_list lst);添加列表项
(end_list)
)

;;函数功能双击删除下拉列表中的元素
;;函数说明
;;调用方式 (setq lst(sjsc_list key lst))
;;例子 (setq keys1(sjsc_list "List1" keys1))
;;key 控件的key值
;;lst 赋予下拉列表控件的表
;;lst 值 样例 (setq lst '("1" "2" "3" "4" "5" "9" "6" "8" "7"))
(defun sjsc_list(key lst / list_sjsc-1)
(setq list_sjsc-1(atoi(get_tile key)))
(setq lst(MJ:removeNth list_sjsc-1 lst))
(start_list key)
(mapcar 'add_list lst)
(end_list)
lst
;;;(dcl_lbfz key lst)
)

小小的人 发表于 2020-5-5 10:23:38

找这个找了很久   试一下效果怎么样   非常感谢分享

yubihai 发表于 2019-10-7 14:44:32


虽然不明白,努力学习中。。。,楼主辛苦,支持原创

Klein 发表于 2023-1-17 22:02:11

学习中,双击的确有用

feng83 发表于 2014-5-6 07:02:20

虽然不明白,努力学习中。。。,楼主辛苦,支持原创

totoro 发表于 2014-5-7 22:37:58

不错~ 收藏备用~

ymcui 发表于 2014-5-10 11:14:53

太有用了,顶起来,

Kye 发表于 2014-5-13 15:55:53

比较厉害

鱼与熊掌 发表于 2014-11-28 23:47:03

正在学习感谢分享,收藏了.

ymcui 发表于 2014-12-2 20:36:53

右边对话框可以点着拖拽来调整上下位置就更美妙了

328302216 发表于 2014-12-3 12:37:05

ymcui 发表于 2014-12-2 20:36 static/image/common/back.gif
右边对话框可以点着拖拽来调整上下位置就更美妙了

你可以自己弄在指定位置加入!拖动倒是真不会!

kkt123 发表于 2015-1-23 11:31:34

太有用了,顶起来

chbddzx12 发表于 2015-2-2 23:30:57

........................
页: [1] 2
查看完整版本: DCL对话框鼠标双击添加、删除