Тема: Передача данных из олного ListBox в другой ListBox

Как перевести данные из одного поля ListBox в другой на ходу?
DCl файл представлен ниже:
flag : dialog {  label = "СЛОЁНАЯ ВЫНОСКА" ;
       : list_box {
                          key = "mater";
                            label= "МАТЕРИАЛЫ";
                fixed_height = true;
                height = 12;
                fixed_width = true;
                width = 68;
                }
                   : spacer { height = 0.5;}
                   : list_box {
                          key = "final";
                          label = "СОСТАВ МАТЕРИАЛОВ ВЫНОСКИ";
                fixed_height = true;
                height = 12;
                fixed_width = true;
                width = 68;
                }       
       : spacer { height = 1;}
ok_cancel;
}
В первый ListBox "Материалы" данные попадают из текстового файла, листинг приведен ниже:
(defun c:sloika ()
; Заполнение списка диалогового окна
(setq dcl_id (load_dialog "sloika.dcl"))
(if (not (new_dialog "flag" dcl_id)) (exit))
(if (setq f (open "C:\\Temp\\sloika.txt" "r"))
(progn
(start_list "mater")
(while (setq str (read-line f)) (add_list str))
(close f)
(end_list)
)
)
                (action_tile "cancel" "(exit)")
    (start_dialog)
    (unload_dialog dcl_id)
    (princ)
(start_dialog)
(unload_dialog dcl_id)
(princ)
)
А как на ходу получить данные из списка "Материалы" в список  "Состав материалов выноски" - вопрос. Хотелось бы при выборе материалов из списка "материалы" чтоб строчка с названием материала попадала в список состава материалов,при выборе следующего материала она бы опускалась ниже и. т. д.

Re: Передача данных из олного ListBox в другой ListBox

http://www.uniip.ru/lib/tech/acad/dcl_l … st_01.html

Re: Передача данных из олного ListBox в другой ListBox

Примерно так.
Вообще без проверок - писал прямо в браузере...

(action_tile "mater" "(set_tile \"final\" (get_tile \"mater\"))")

Re: Передача данных из олного ListBox в другой ListBox

> Евгений Елпанов
К сожалению строчка не не работает, кстати получив при этом способе второй список, как из него извлечь данные? Как выход вписывать в файл , а там манипулировать ?

Re: Передача данных из олного ListBox в другой ListBox

> Василий
Извини, не обратил внимание, что у тебя list_box...
Конечно, заполнять нужно не через set_tile, а start_list,add_list,end_list.
Надеюсь, что сам разберешься...

Re: Передача данных из олного ListBox в другой ListBox

Добился того что из одного ListBox информация переходит в другой , но вместо текста  получаем
номера строк(хотя должно быть значение этой строки). Где я ошибаюсь? Как получить список, либо в файл, либо в простом виде списка List, для дальнейшей работы? Листинг приведён ниже:
(defun c:sloika ()
; Заполнение списка диалогового окна
(setq dcl_id (load_dialog "sloika.dcl"))
(if (not (new_dialog "flag" dcl_id)) (exit))
(if (setq f (open "C:\\Temp\\sloika.txt" "r"))
(progn
(start_list "mater")
(while (setq str (read-line f)) (add_list str))
(close f)
(end_list)
)
)
(if (setq f (open "C:\\Temp\\sloika1.txt" "r"))
(progn
(start_list "final")
(while (setq str (read-line f)) (add_list str))
(close f)
(end_list)
)
)
                (action_tile "mater"   "(setq str (get_tile \"mater\"))
             (write-line str ff)
             (start_list \"final\" 2)
             (add_list str)
             (end_list)
              ")
                (action_tile "cancel" "(exit)")
    (start_dialog)
    (unload_dialog dcl_id)
    (setq lll "final")
                (List lll)
    ;(princ)
)

Re: Передача данных из олного ListBox в другой ListBox

;;; вытаскивание строки из поля списка по индексу (в поле списка сидит список строк), т.e. ф-я вытаскивает строку из списка по идексу
;;; readlist - индекс
;;; displist - исходный список
(defun mk_list (readlist displist / count item retlist)
  (setq count 1)
  (while (setq item (read readlist))
    (setq retlist (cons (nth item displist) retlist))
    (while (and (/= " " (substr readlist count 1))
                (/= "" (substr readlist count 1))
           )
      (setq count (1+ count))
    )
    (setq readlist (substr readlist count))
  )
  (car (reverse retlist))
)