AboutScott Cook Expertise I`ve been using AutoCAD since 1987 and programming AutoLISP nearly as long. I can answer questions about programming AutoCAD (except ARX) and production enhancement techniques. I cannot answer questions about AutoCAD crashes or DWG corruption. AutoCAD PROGRAMMING (menus, lisp) related questions only!
Experience Since 1987. Author of Plot2000 software for for AutoCAD, http://www.plot2000.com.
PROGRAMMING QUESTIONS ONLY PLEASE. Questions that are NOT related to programming or AutoCAD customization (menus and lisp only please) are outside the scope of my volunteer services and will NOT BE ANSWERED.
toggle1 is used to set default data
saving and restoring default data is working fine.
the popup wil only hide but7 if i select entry nr 7 from the list and unhide but 7 if i select entry nr 6.
The thing i want is that but7 is hide when entry nr 6, 7, 8 and 9 is selected and when 0, 1, 2, 3, 4 and 5 is slected but7 has to unhide itself
Is it possible to make a action_tile that do this?
If you need more info just let me know.
Greetings
Don
ANSWER: I think you are going to have to use a conditional with greater and less than ranges instead of the math you are doing now and set mode_tile to 0 or 1 accordingly.
I also find it easier to use one function call to handle events for the entire dialog instead of the individual action_tile method you are doing now. There is an example of this in the manual. You won't have to worry about the embedding of strings in your handler that way.
---------- FOLLOW-UP ----------
QUESTION: Hi scott,
Thanks for your answer.
I read the manual you told about,
bud i can't find anything you told about in this manual.
Please can you send me the url of the page where i can find an example.
Greetings
Don
Answer The new_dialog function call can specify the default action handler. I was unable to find any good examples of how to do a global handler on the internet or manual, so this is why it's taken me time to get back to you. I had to go dig in my code to see how I had done it in the past.
Basically, the deal is you should define your own function that gets called as the default handler, then check for the key and value variables in a big conditional to deal with each dialog event.
The benefit of this method is that you aren't trying to cram a bunch of stuff into action_tile statements that have quoted strings, etc.
(setq dia (load_dialog (findfile "mydialog.dcl")))
;define the global handler in the new_dialog call below
(setq newd (new_dialog "my_dialog_box" dia "(my_handler $key $value)"))
;initialize your default values and stuff here
;do your start_dialog, done_dialog return value checking, and unload_dialog stuff as normal
;now define the function that gets called for every dialog action and trap the stuff you are interested in
(defun my_handler (key value)
;$key The key attribute of the tile that was selected.This variable applies to all actions.
;$value The string form of the current value of the tile, such as the string from an edit box, or a "1" or "0" from a toggle.This variable applies to all actions.If the tile is a list box (or pop-up list) and no item is selected, the $value variable will be nil.
;uncomment the line below to see what is going on
;(princ (strcat "\nKey: " key " Value: " value))
(cond
((= key "MY_TILE1")
; do some work
)
((= key "WHATEVER_TILE")
;do some other work
)
;you need default accept/cancel handlers
((= key "accept")
(done_dialog 1) ;these values get returned to your start_dialog call
)
((= key "cancel")
(done_dialog 0) ;gets returned to your start_dialog call
)
)
)