Jump to content

Recommended Posts

Posted

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

Posted

(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

Posted

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

Guest kruuger
Posted
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

Posted
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])
)

Guest kruuger
Posted
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

Posted

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

Posted

thanks Kruuger and Lee mac for helping me out

SF

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...