请问该怎样将程序执行时,控制按键方式的不同,產生不同的结果呢?
exp: 情况一 command: ee => (= dd 1) c:lspdcl01 -> (= dd 2) c:lspdcl0102 选取 c:lspdcl01 后执行 c:lspdcl0102 command: ee => (= dd 5) NO ACTION ! 按下任意键除空白键外,则出现 NO ACTION ! 讯息
另外情况二 command: ee => (= dd 1) c:lspdcl01 -> (= dd 2) c:lspdcl0102 选取 c:lspdcl01 后执行 c:lspdcl0102 command: ee => "按下空白键" -> (= dd 2) c:lspdcl0102 按下空白键则执行程序中的 c:lspdcl0102 此处随上次执行的不同而不同~
以下为程序内容: ;;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;;; ee.lsp (defun c:ee () (setq dcl_id(load_dialog "ee")) (new_dialog "ee" dcl_id) ;(setq dd 7) (while (/= 5 dd) (action_tile "k1" "(done_dialog 1)") (action_tile "k2" "(done_dialog 2)") (action_tile "k3" "(done_dialog 3)") (action_tile "k4" "(done_dialog 4)") (action_tile "cancel" "(done_dialog 5)") (setq dd (start_dialog))
(cond ((= dd 1)(c:lspdcl01)) ((= dd 2)(c:lspdcl02)) ((= dd 3)(c:lspdcl03)) ((= dd 4)(c:lspdcl04)) ((= dd 5)(alert "NO ACTION !")) ); end while (unload_dialog dcl_id) ) nil )
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;LISP-lspdcl01 ;######################################################################## (defun c:lspdcl01 () (setq dcl_id(load_dialog "ee")) (new_dialog "LSPDCL1" dcl_id) (action_tile "k1" "(done_dialog 1)") (action_tile "k2" "(done_dialog 2)") (setq dd (start_dialog)) (cond ((= dd 1)(c:lspdcl0101)) ((= dd 2)(c:lspdcl0102)) (t (alert "NO ACTION !")) )) ;######################################################################## (defun c:lspdcl0101 () (prompt "\n **<lspdcl0101>**") (prin1))
(defun c:lspdcl0102 () (prompt "\n **<lspdcl0102>**") (prin1))
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;LISP-lspdcl02-02. ;######################################################################## (defun c:lspdcl02 () (setq dcl_id(load_dialog "ee")) (new_dialog "LSPDCL2" dcl_id) (action_tile "k1" "(done_dialog 1)") (action_tile "k2" "(done_dialog 2)") (setq dd (start_dialog)) (cond ((= dd 1)(c:lspdcl0201)) ((= dd 2)(c:lspdcl0202)) (t (alert "NO ACTION !")) )) ;######################################################################## (defun c:lspdcl0201 () (prompt "\n **<lspdcl0201>**") (prin1))
(defun c:lspdcl0202 () (prompt "\n **<lspdcl0202>**") (prin1))
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;LISP-lspdcl03-03. ;######################################################################## (defun c:lspdcl03 () (setq dcl_id(load_dialog "ee")) (new_dialog "LSPDCL3" dcl_id) (action_tile "k1" "(done_dialog 1)") (action_tile "k2" "(done_dialog 2)") (setq dd (start_dialog)) (cond ((= dd 1)(c:lspdcl0301)) ((= dd 2)(c:lspdcl0302)) (t (alert "NO ACTION !")) )) ;######################################################################## (defun c:lspdcl0301 () (prompt "\n **<lspdcl0301>**") (prin1))
(defun c:lspdcl0302 () (prompt "\n **<lspdcl0302>**") (prin1))
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;LISP-lspdcl04-04. ;######################################################################## (defun c:lspdcl04 () (setq dcl_id(load_dialog "ee")) (new_dialog "LSPDCL4" dcl_id) (action_tile "k1" "(done_dialog 1)") (action_tile "k2" "(done_dialog 2)") (setq dd (start_dialog)) (cond ((= dd 1)(c:lspdcl0401)) ((= dd 2)(c:lspdcl0402)) (t (alert "NO ACTION !")) )) ;######################################################################## (defun c:lspdcl0401 () (prompt "\n **<lspdcl0401>**") (prin1))
(defun c:lspdcl0402 () (prompt "\n **<lspdcl0402>**") (prin1))
;;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //ee.dcl ee :dialog { label="function"; :row{ :column{ :button{label="01.function";width="5";key="k1";} :button{label="02.function";width="5";key="k2";} } :column{ :button{label="03.function";width="5";key="k3";} :button{label="04.function";width="5";key="k4";} } } spacer_1; ok_cancel_help; }
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //01.function //######################################################################## LSPDCL1 :dialog { label="01.function"; :row{ :column{ :button{label="01.function-101";width="5";key="k1";} } :column{ :button{label="02.function-102";width="5";key="k2";} } } spacer_1; ok_cancel_help; }
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //02.function //######################################################################## LSPDCL2 :dialog { label="02.function"; :row{ :column{ :button{label="01.function-201";width="5";key="k1";} } :column{ :button{label="02.function-202";width="5";key="k2";} } } spacer_1; ok_cancel_help; }
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //03.function //######################################################################## LSPDCL3 :dialog { label="03.function"; :row{ :column{ :button{label="01.function-301";width="5";key="k1";} } :column{ :button{label="02.function-302";width="5";key="k2";} } } spacer_1; ok_cancel_help; }
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //04.function //######################################################################## LSPDCL4 :dialog { label="04.function"; :row{ :column{ :button{label="01.function-401";width="5";key="k1";} } :column{ :button{label="02.function";width="5";key="k2";} } } spacer_1; ok_cancel_help; } ;;;############################### |