Hallo, ich habe da mal was gebastelt, vielleicht hilft Dir der Gedankenansatz ja weiter.
gestartet wird das Beispiel mit (test1 nil nil nil). Die Werte 1-3 werden von einer zur nächsten Funktion weitergereicht. Bei komplexen Dialogfeldern speicher ich mir die Werte immer in einer zugehörigen Textdatei ab, damit ich für das nächste Aufstarten die Default Werte der vorherigen Eingabe zur Verfügung habe.
LISP******************************************************
(defun test1 (wert1 wert2 wert3 / ok dat)
(setq dat (load_dialog "test.dcl"))
(if (not (new_dialog "test_1" dat)) (exit))
(if wert1 (set_tile "1_e1" wert1))
(mode_tile "1_e1" 2)
(action_tile "1_b1" "(setq wert1 (get_tile \"1_e1\"))(done_dialog 1)");;;weiter
(action_tile "cancel" "(done_dialog 99)");;Abbrechen
(setq Ok (start_dialog))
(unload_dialog dat)
(if (= ok 1)(test2 wert1 wert2 wert3)))
(defun test2 (wert1 wert2 wert3 / ok dat)
(setq dat (load_dialog "test.dcl"))
(if (not (new_dialog "test_2" dat)) (exit))
(if wert2 (set_tile "2_e1" wert2))
(mode_tile "2_e1" 2)
(action_tile "2_b1" "(setq wert2 (get_tile \"2_e1\"))(done_dialog 1)");;;vorher
(action_tile "2_b2" "(setq wert2 (get_tile \"2_e1\"))(done_dialog 2)");;;weiter
(action_tile "cancel" "(done_dialog 99)");;Abbrechen
(setq Ok (start_dialog))
(unload_dialog dat)
(cond ((= ok 1)(test1 wert1 wert2 wert3))
((= ok 2)(test3 wert1 wert2 wert3))
)
)
(defun test3 (wert1 wert2 wert3 / ok dat)
(setq dat (load_dialog "test.dcl"))
(if (not (new_dialog "test_3" dat)) (exit))
(if wert3 (set_tile "3_e1" wert3))
(mode_tile "3_e1" 2)
(action_tile "3_b1" "(setq wert3 (get_tile \"3_e1\"))(done_dialog 1)");;;vorher
(action_tile "cancel" "(done_dialog 99)");;Abbrechen
(action_tile "accept" "(setq wert3 (get_tile \"3_e1\"))(done_dialog 0)");;;OK
(setq Ok (start_dialog))
(unload_dialog dat)
(cond((= ok 1)(test2 wert1 wert2 wert3))
((= ok 0)(list wert1 wert2 wert3)))
)
DCL******************************************
test_1 : dialog {label = "1. DCL-Fenster";
:edit_box {label = "Wert 1"; key = "1_e1";allow_accept=true;}
:button {label= "weiter"; key = "1_b1"; is_default = true;}
:button {label= "Abbrechen"; key ="cancel"; is_cancel=true;}}
test_2 : dialog {label = "2. DCL-Fenster";
:edit_box {label = "Wert 2"; key = "2_e1";allow_accept=true;}
:row {
:button {label= "vorher"; key = "2_b1"; }
:button {label= "weiter"; key = "2_b2"; is_default = true;}}
:button {label= "Abbrechen"; key ="cancel"; is_cancel=true;}}
test_3 : dialog {label = "3. DCL-Fenster";
:edit_box {label = "Wert 3"; key = "3_e1";allow_accept=true;}
:button {label= "vorher"; key = "3_b1"; }
ok_cancel;}
------------------
viele Grüße
Jörn
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP