那太糟糕了。我为那些公司工作过。
尝试此选项以选择列表。。。
- (defun AT:ListSelect (title label height width multi lst / fn fo d item f)
- ;; List Select Dialog (Temp DCL list box selection, based on provided list)
- ;; title - list box title
- ;; label - label for list box
- ;; height - height of box
- ;; width - width of box
- ;; multi - selection method ["true": multiple, "false": single]
- ;; lst - list of strings to place in list box
- ;; Alan J. Thompson, 09.23.08 / 05.17.10 (rewrite)
- (setq fo (open (setq fn (vl-filename-mktemp "" "" ".dcl")) "w"))
- (foreach x (list (strcat "list_select : dialog { label = "" title ""; spacer;")
- (strcat ": list_box { label = "" label "";" "key = "lst";")
- (strcat "allow_accept = true; height = " (vl-princ-to-string height) ";")
- (strcat "width = " (vl-princ-to-string width) ";")
- (strcat "multiple_select = " multi "; } spacer; ok_cancel; }")
- )
- (write-line x fo)
- )
- (close fo)
- (new_dialog "list_select" (setq d (load_dialog fn)))
- (start_list "lst")
- (mapcar (function add_list) lst)
- (end_list)
- (setq item (set_tile "lst" "0"))
- (action_tile "lst" "(setq item $value)")
- (setq f (start_dialog))
- (unload_dialog d)
- (vl-file-delete fn)
- (if (= f 1)
- ((lambda (s / i s l)
- (while (setq i (vl-string-search " " s))
- (setq l (cons (nth (atoi (substr s 1 i)) lst) l))
- (setq s (substr s (+ 2 i)))
- )
- (reverse (cons (nth (atoi s) lst) l))
- )
- item
- )
- )
- )
该回家了,否则我会帮你做一个小演示。 |