Small Fish Posted April 26, 2011 Posted April 26, 2011 Hi i have a dialog box with 2 radio buttons and 3 popup lists I am having problems greying out popup lists. When one radio button (crossfall) is chosen I would like the "crossfall" popup list to be clear and the other two i.e. "camber % left" and "camber % right" to be greyed out. When the "camber" radio button is chosen the "camber % left" and "camber % right" popup list are clear, and "crossfall" greyed out. Anyone have a solution without changing my dcl function too much - as I more or less understand it. many thanks (defun c:greytest (/) (setq ONOFF "0") (greytestdcl) ) (defun greytestdcl (/ ReturnValue GradTypeTile) (defun CheckOnClose (/ ) (cond ((not(setq GradTypeTile (get_tile "GradType"))) (mode_tile "GradType" 2) ) (T (setq XFallLhs (nth (read (get_tile "XFallLhs" ))XFallLhsList) XFallRhs (nth (read (get_tile "XFallRhs" ))XFallRhsList) XFall (nth (read (get_tile "XFall" ))XFallList) );setq (done_dialog 1) );T );cond );defun CheckOnClose (if (> (setq DLGID (load_dialog "greytest.dcl")) 0) (progn (new_dialog "greytest" DLGID) (setq XFallLhsList '( "0.5" "1.0" "1.5" "2.0" "2.5" "3.0" "3.5" "4.0" )) (start_list "XFallLhs") (mapcar 'add_list XFallLhsList) (end_list) (if (member XFallLhs XFallLhsList) (set_tile "XFallLhs" (rtos (vl-position XFallLhs XFallLhsList) 2 0)) (set_tile "XFallLhs" "3") );if (setq XFallRhsList '( "0.5" "1.0" "1.5" "2.0" "2.5" "3.0" "3.5" "4.0" )) (start_list "XFallRhs") (mapcar 'add_list XFallrhsList) (end_list) (if (member XFallRhs XFallRhsList) (set_tile "XFallRhs" (rtos (vl-position XFallRhs XFallRhsList) 2 0)) (set_tile "XFallRhs" "3") );if (setq XFallList '( "0.5" "1.0" "1.5" "2.0" "2.5" "3.0" "3.5" "4.0" )) (start_list "XFall") (mapcar 'add_list XFallList) (end_list) (if (member XFall XFallList) (set_tile "XFall" (rtos (vl-position XFall XFallList) 2 0)) (set_tile "XFall" "3") );if (action_tile "XFallLhs" "(ErrorDLG 0)") (action_tile "XFallRhs" "(ErrorDLG 0)") (action_tile "XFall" "(ErrorDLG 0)") (action_tile "onoff" "(setq onoff $value)(onf)") (action_tile "accept" "(CheckOnClose)") (action_tile "cancel" "(exit)") (if (= ONOFF "1") (set_tile "onoff" "1") );if (ONF) (setq ReturnValue(start_dialog)) (unload_dialog DLGID) );progn (not (princ "\nNo DCL")) );if ReturnValue );defun (defun ONF () (if (= ONOFF "1") (progn (mode_tile "XFall" 0) );progn (progn (mode_tile "XFall" 1) );progn );if );defun (defun ErrorDLG (pErr) (cond ((= pErr 0) (set_tile "error" "")) );cond );defun dcl_settings : default_dcl_settings { audit_level = 3 ; } greytest : dialog { label = "Grey test" ; spacer_1; :boxed_radio_column { fixed_width = true ; label = "Road Gradient Type" ; key = "GradType"; :radio_button { label = "Cross Fall " ; key = "CrossFall" ; } :radio_button { label = "Camber"; key = "Camber" ; } }//End radio row :boxed_column { width = 1 ; :popup_list { label = "Camber % Left "; key = "XFallLhs" ; }//popup list width = 1 ; :popup_list { label = "Camber % Right "; key = "XFallRhs" ; }//popup list width = 1 ; :popup_list { label = "Crossfall % "; key = "XFall" ; }//popup list width = 1 ; spacer_1 ; }//boxed column errtile ; ok_cancel ; }//dialog Quote
pBe Posted April 26, 2011 Posted April 26, 2011 (defun c:greytest (/) (setq ONOFF "0") (greytestdcl) ) (defun greytestdcl (/ ReturnValue GradTypeTile) (defun CheckOnClose (/ ) (cond ((not(setq GradTypeTile (get_tile "GradType"))) (mode_tile "GradType" 2) ) (T (setq XFallLhs (nth (read (get_tile "XFallLhs" ))XFallLhsList) XFallRhs (nth (read (get_tile "XFallRhs" ))XFallRhsList) XFall (nth (read (get_tile "XFall" ))XFallList) );setq (done_dialog 1) );T );cond );defun CheckOnClose (if (> (setq DLGID (load_dialog "greytest.dcl")) 0) (progn (new_dialog "greytest" DLGID) (setq XFallLhsList '( "0.5" "1.0" "1.5" "2.0" "2.5" "3.0" "3.5" "4.0" )) (start_list "XFallLhs") (mapcar 'add_list XFallLhsList) (end_list) (if (member XFallLhs XFallLhsList) (set_tile "XFallLhs" (rtos (vl-position XFallLhs XFallLhsList) 2 0)) (set_tile "XFallLhs" "3") );if (setq XFallRhsList '( "0.5" "1.0" "1.5" "2.0" "2.5" "3.0" "3.5" "4.0" )) (start_list "XFallRhs") (mapcar 'add_list XFallrhsList) (end_list) (if (member XFallRhs XFallRhsList) (set_tile "XFallRhs" (rtos (vl-position XFallRhs XFallRhsList) 2 0)) (set_tile "XFallRhs" "3") );if (setq XFallList '( "0.5" "1.0" "1.5" "2.0" "2.5" "3.0" "3.5" "4.0" )) (start_list "XFall") (mapcar 'add_list XFallList) (end_list) (if (member XFall XFallList) (set_tile "XFall" (rtos (vl-position XFall XFallList) 2 0)) (set_tile "XFall" "3") );if [color=blue](mode_tile "XFallLhs" 1)[/color] [color=blue](mode_tile "XFallRhs" 1)[/color] [color=blue](mode_tile "XFall" 1)[/color] [color=blue](action_tile "CrossFall" "(Modetest)")[/color] [color=blue](action_tile "Camber" "(Modetest)")[/color] (action_tile "XFallLhs" "(ErrorDLG 0)") (action_tile "XFallRhs" "(ErrorDLG 0)") (action_tile "XFall" "(ErrorDLG 0)") (action_tile "onoff" "(setq onoff $value)(onf)") (action_tile "accept" "(CheckOnClose)") (action_tile "cancel" "(exit)") (if (= ONOFF "1") (set_tile "onoff" "1") );if (ONF) (setq ReturnValue(start_dialog)) (unload_dialog DLGID) );progn (not (princ "\nNo DCL")) );if ReturnValue );defun (defun ONF () (if (= ONOFF "1") (progn (mode_tile "XFall" 0) );progn (progn (mode_tile "XFall" 1) );progn );if );defun (defun ErrorDLG (pErr) (cond ((= pErr 0) (set_tile "error" "")) );cond );defun [color=blue](defun ModeTest ()[/color] [color=blue] (if (eq (get_tile "CrossFall") "1")[/color] [color=blue] (progn (mode_tile "XFallLhs" 1)[/color] [color=blue] (mode_tile "XFallRhs" 1)[/color] [color=blue] (mode_tile "XFall" 0))[/color] [color=blue] (progn (mode_tile "XFallLhs" 0)[/color] [color=blue] (mode_tile "XFallRhs" 0)[/color] [color=blue] (mode_tile "XFall" 1))[/color] [color=blue] )[/color] [color=blue])[/color] Action for your radio buttons Quote
Small Fish Posted April 26, 2011 Author Posted April 26, 2011 hey PBe - that is brilliant!!! - my attempt was not that close. many thanks. Just one small question - I know how to make values in popup lists and edit boxes remember their value while in session, but how do you make a radio button remember its "position" ? (ie its last setting) Mine always goes back to the default radio button Quote
Guest kruuger Posted April 26, 2011 Posted April 26, 2011 hey PBe - that is brilliant!!! - my attempt was not that close. many thanks. Just one small question - I know how to make values in popup lists and edit boxes remember their value while in session, but how do you make a radio button remember its "position" ? (ie its last setting) Mine always goes back to the default radio button http://web2.airmail.net/terrycad/Tutorials/MyDialogs.htm#MyRadios kruuger Quote
Lee Mac Posted April 26, 2011 Posted April 26, 2011 how do you make a radio button remember its "position" ? (ie its last setting) Perhaps take some time to study the following code: ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] *error* file hand ofile ) [color=GREEN];;-----------------------------------------------------;;[/color] [color=GREEN];; Example to demonstrate how to recall a previously ;;[/color] [color=GREEN];; selected radio button. ;;[/color] [color=GREEN];; ;;[/color] [color=GREEN];; © Lee Mac 2011 - www.lee-mac.com ;;[/color] [color=GREEN];;-----------------------------------------------------;;[/color] ([color=BLUE]defun[/color] *error* ( msg ) ([color=BLUE]if[/color] ([color=BLUE]and[/color] hand ([color=BLUE]<[/color] 0 hand)) ([color=BLUE]unload_dialog[/color] hand)) ([color=BLUE]if[/color] ([color=BLUE]and[/color] file ([color=BLUE]setq[/color] file ([color=BLUE]findfile[/color] file))) ([color=BLUE]vl-file-delete[/color] file)) ([color=BLUE]or[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] msg) [color=MAROON]"*BREAK,*CANCEL*,*EXIT*"[/color]) ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\n** Error: "[/color] msg [color=MAROON]" **"[/color]))) ([color=BLUE]princ[/color]) ) ([color=BLUE]setq[/color] file ([color=BLUE]vl-filename-mktemp[/color] [color=BLUE]nil[/color] [color=BLUE]nil[/color] [color=MAROON]".dcl"[/color])) ([color=BLUE]cond[/color] ( ([color=BLUE]not[/color] ([color=BLUE]and[/color] ([color=BLUE]setq[/color] ofile ([color=BLUE]open[/color] file [color=MAROON]"w"[/color])) ([color=BLUE]foreach[/color] line ([color=BLUE]list[/color] [color=MAROON]"example : dialog { label = \"Example\"; spacer;"[/color] [color=MAROON]" : row { spacer_1;"[/color] [color=MAROON]" : radio_column { spacer;"[/color] [color=MAROON]" : radio_button { key = \"key1\"; label = \"Option 1\"; }"[/color] [color=MAROON]" : radio_button { key = \"key2\"; label = \"Option 2\"; }"[/color] [color=MAROON]" : radio_button { key = \"key3\"; label = \"Option 3\"; } spacer;"[/color] [color=MAROON]" }"[/color] [color=MAROON]" }"[/color] [color=MAROON]" ok_only;"[/color] [color=MAROON]"}"[/color] ) ([color=BLUE]write-line[/color] line ofile) ) ([color=BLUE]progn[/color] ([color=BLUE]setq[/color] ofile ([color=BLUE]close[/color] ofile)) ([color=BLUE]<[/color] 0 ([color=BLUE]setq[/color] hand ([color=BLUE]load_dialog[/color] file))) ) ([color=BLUE]new_dialog[/color] [color=MAROON]"example"[/color] hand [color=MAROON]""[/color] ([color=BLUE]cond[/color] ( *screen* ) ( '(-1 -1) ))) ) ) ([color=BLUE]princ[/color] [color=MAROON]"\n--> Error Loading Dialog."[/color]) ) ([color=BLUE]t[/color] ([color=BLUE]set_tile[/color] ([color=BLUE]cond[/color] ( *radio* ) ( [color=MAROON]"key1"[/color] )) [color=MAROON]"1"[/color]) ([color=BLUE]foreach[/color] key '([color=MAROON]"key1"[/color] [color=MAROON]"key2"[/color] [color=MAROON]"key3"[/color]) ([color=BLUE]action_tile[/color] key [color=MAROON]"(setq *radio* $key)"[/color]) ) ([color=BLUE]action_tile[/color] [color=MAROON]"accept"[/color] [color=MAROON]"(setq *screen* (done_dialog 0))"[/color]) ([color=BLUE]start_dialog[/color]) ) ) ([color=BLUE]if[/color] ([color=BLUE]and[/color] hand ([color=BLUE]<[/color] 0 hand)) ([color=BLUE]unload_dialog[/color] hand)) ([color=BLUE]if[/color] ([color=BLUE]and[/color] file ([color=BLUE]setq[/color] file ([color=BLUE]findfile[/color] file))) ([color=BLUE]vl-file-delete[/color] file)) ([color=BLUE]princ[/color]) ) Quote
Guest kruuger Posted April 27, 2011 Posted April 27, 2011 Perhaps take some time to study the following code: ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] *error* file hand ofile ) [color=GREEN];;-----------------------------------------------------;;[/color] [color=GREEN];; Example to demonstrate how to recall a previously ;;[/color] [color=GREEN];; selected radio button. ;;[/color] [color=GREEN];; ;;[/color] [color=GREEN];; © Lee Mac 2011 - www.lee-mac.com ;;[/color] [color=GREEN];;-----------------------------------------------------;;[/color] ([color=BLUE]defun[/color] *error* ( msg ) ([color=BLUE]if[/color] ([color=BLUE]and[/color] hand ([color=BLUE]<[/color] 0 hand)) ([color=BLUE]unload_dialog[/color] hand)) ([color=BLUE]if[/color] ([color=BLUE]and[/color] file ([color=BLUE]setq[/color] file ([color=BLUE]findfile[/color] file))) ([color=BLUE]vl-file-delete[/color] file)) ([color=BLUE]or[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] msg) [color=MAROON]"*BREAK,*CANCEL*,*EXIT*"[/color]) ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\n** Error: "[/color] msg [color=MAROON]" **"[/color]))) ([color=BLUE]princ[/color]) ) ([color=BLUE]setq[/color] file ([color=BLUE]vl-filename-mktemp[/color] [color=BLUE]nil[/color] [color=BLUE]nil[/color] [color=MAROON]".dcl"[/color])) ([color=BLUE]cond[/color] ( ([color=BLUE]not[/color] ([color=BLUE]and[/color] ([color=BLUE]setq[/color] ofile ([color=BLUE]open[/color] file [color=MAROON]"w"[/color])) ([color=BLUE]foreach[/color] line ([color=BLUE]list[/color] [color=MAROON]"example : dialog { label = \"Example\"; spacer;"[/color] [color=MAROON]" : row { spacer_1;"[/color] [color=MAROON]" : radio_column { spacer;"[/color] [color=MAROON]" : radio_button { key = \"key1\"; label = \"Option 1\"; }"[/color] [color=MAROON]" : radio_button { key = \"key2\"; label = \"Option 2\"; }"[/color] [color=MAROON]" : radio_button { key = \"key3\"; label = \"Option 3\"; } spacer;"[/color] [color=MAROON]" }"[/color] [color=MAROON]" }"[/color] [color=MAROON]" ok_only;"[/color] [color=MAROON]"}"[/color] ) ([color=BLUE]write-line[/color] line ofile) ) ([color=BLUE]progn[/color] ([color=BLUE]setq[/color] ofile ([color=BLUE]close[/color] ofile)) ([color=BLUE]<[/color] 0 ([color=BLUE]setq[/color] hand ([color=BLUE]load_dialog[/color] file))) ) ([color=BLUE]new_dialog[/color] [color=MAROON]"example"[/color] hand [color=MAROON]""[/color] ([color=BLUE]cond[/color] ( *screen* ) ( '(-1 -1) ))) ) ) ([color=BLUE]princ[/color] [color=MAROON]"\n--> Error Loading Dialog."[/color]) ) ([color=BLUE]t[/color] ([color=BLUE]set_tile[/color] ([color=BLUE]cond[/color] ( *radio* ) ( [color=MAROON]"key1"[/color] )) [color=MAROON]"1"[/color]) ([color=BLUE]foreach[/color] key '([color=MAROON]"key1"[/color] [color=MAROON]"key2"[/color] [color=MAROON]"key3"[/color]) ([color=BLUE]action_tile[/color] key [color=MAROON]"(setq *radio* $key)"[/color]) ) ([color=BLUE]action_tile[/color] [color=MAROON]"accept"[/color] [color=MAROON]"(setq *screen* (done_dialog 0))"[/color]) ([color=BLUE]start_dialog[/color]) ) ) ([color=BLUE]if[/color] ([color=BLUE]and[/color] hand ([color=BLUE]<[/color] 0 hand)) ([color=BLUE]unload_dialog[/color] hand)) ([color=BLUE]if[/color] ([color=BLUE]and[/color] file ([color=BLUE]setq[/color] file ([color=BLUE]findfile[/color] file))) ([color=BLUE]vl-file-delete[/color] file)) ([color=BLUE]princ[/color]) ) Lee you should publish somewhere your sample/test routine Maybe book ? I would like to buy one Saving radio_button settings, dialog position, create dcl on the fly - damn good. kruuger Quote
Lee Mac Posted April 27, 2011 Posted April 27, 2011 Thanks Kruuger I'm not sure I have the time (or enough knowledge) to publish a whole book... but I'm glad you could find my example helpful. I'll probably add it to my site at some point for easy access. Thanks Lee Quote
Small Fish Posted April 28, 2011 Author Posted April 28, 2011 thanks Kruuger and Lee mac for helping me out SF Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.