Тема: Как создать вложенные окна?

как сделать вложенные окна
тоесть чтоб при нажатии на кнопку в одном окне открывалось другое а предыдущее не закрывалось
и оба окна передавали свои параметры в  lisp программу

Re: Как создать вложенные окна?

написал примерную прогу где переход в одно окно
сделать  удалось , а вот обратно никак ,,???
пишет  ошибка : неверный тип аргумента consp nil

set_tile "edit2" "100")
(set_tile "edit1" "0")
(setq on_ed1 "0" on_ed2 "100")
(setq what_next 8)
(while (< 2 what_next)
(action_tile "edit1" "(setq on_ed1 $value)")
(action_tile "edit2" "(setq on_ed2 $value)")
(action_tile "btn2" "(done_dialog 2)")
(setq what_next0 (start_dialog))
  (cond                                                      ;ето из-за етого
((= what_next0 2) (alert "кнопка 2!")))
;но как в цикле подругому проверить была ли она нажата ????
(action_tile "edit3" "(setq on_ed3 $value)")
(action_tile "accept" "(done_dialog 1) (ok_tab)")
(setq what_next (start_dialog))
)
(unload_dialog dcl_id) ; Unload the DCL file
(setq relst ret_value1)

Re: Как создать вложенные окна?

всё ненадо я разобрался

(defan  den(/)
(alert "кнопка 2!")
)
(while (< 2 what_next)
(action_tile "edit1" "(setq on_ed1 $value)")
(action_tile "edit2" "(setq on_ed2 $value)")
(action_tile "btn2" "(den)")
)

Re: Как создать вложенные окна?

Здравствуйте! Помогите пожалуйста разобраться с различными переходами их одного окна в другое! Возможно это элементарно, но я пока не совсем понимаю.
Так вот! Есть три диалоговых окна: №1, №2, №3. Из №1 надо перейти в №2 по нажатию ОК так, чтобы №1 закрылось! Из №2 надо перейти  в №3 по кнопке "Далее", так чтобы №2 осталось открытым, а потом назад перейти из №3 в №2 по нажатию кнопки "Назад"
Из окна №1 не получается перейти так в №2, чтобы №1 закрылось. Из №2 в №3 вообще не переходит и виснет так, что приходится снимать АКАД через три клавиши! Подскажите пож-та мою ошибку! Заранее благодарю!
DCL:
Окно №1 tmp.dcl

 window_1:dialog{label="Первое окно";
:text{label="ЭТо окно должно закрыться при нажатииOK ";}
:text{label="И появиться Второе окно";}
spacer_1;
ok_cancel;
}

Окно №2 и №3 tmp1.dcl

window_2:dialog{label="Второе окно";
:text{label="ЭТо окно должно появиться при нажатии ОК в Первом окне";}
:text{label="При нажатии Далее должно появиться вложенное Третье окно";}
spacer_1;
:button {label="Далее>";key="btn1"; fixed_width=true; alignment=centered;}
cancel_button;
}
window_3:dialog{label="Третье окно";
:text{label="ЭТо окно должно появиться при нажатии Далее во Втором окне";}
:text{label="При нажатии <Назад должно появиться Второе окно";}
spacer_1;
:button {label="<Назад";key="btn1"; fixed_width=true; alignment=centered;}
cancel_button;
}

LISP:

 (defun start ( / dcl_id step); Окно №1
(setq dcl_id (load_dialog "d:/lisp/tmp.dcl"))
(if (not (new_dialog "window_1" dcl_id))
(exit))
;(setq step nil)
(action_tile "accept" "(done_dialog) (inp_data)")
(action_tile "cancel" "(done_dialog) ")
(start_dialog)
(unload_dialog dcl_id)
(princ "1")
  )
(defun inp_data ( / dcl_id step); Окно №2
(setq dcl_id (load_dialog "d:/lisp/tmp1.dcl"))
(if (not (new_dialog "window_2" dcl_id))
(exit))
(setq step 8)
(while (<= 2 step)
(action_tile "btn1" "(done_dialog 2)")
(action_tile "cancel" "(done_dialog 1)")
(setq step (start_dialog))
(cond
((= step 2) (open2 dcl_id))
((= step 1) (term_dialog))
  )
  )
(unload_dialog dcl_id)
(princ "2")
  )
(defun open2 (dc /); Окно №3
(if (not (new_dialog "window_3" dc)) (exit))
(action_tile "btn1" "(done_dialog)")
(start_dialog)
(princ "3")
  )