How do I call the dropdownList Selected handler as a function?

MAXScript FAQ > Scripted UI > How do I call the dropdownList Selected handler as a function?

A user asked:

Event handlers of User Interface Controls can be called as functions. For example, myButton.pressed(), mySpinner.changed 10.0 and so on, but this is not possible with the onselected() event handler of a dropdownlist control because it already has a property called .selected that "hides" the function.

Is there any way to call this method?

Answer:

Not directly - it is a known limitation, but unlikely to get fixed because of backwards compatibility problems.

What you can do is define a function that does what the handler does, then call this custom function from both the handler and from whatever other code that wants to invoke the handler.

EXAMPLE

rollout testddl_rollout "Dropdownlist Handler"
(
  dropdownlist ddl_someList items:#("1","2","3")--this is the dropdownlist
  button btn_select1 "Select 1"--these buttons will set the list
  button btn_select2 "Select 2"--by calling the custom function that
  button btn_select3 "Select 3"--replaces the on selected() handler
 
  --this is the custom function that performs the operations normally done
  --inside the on selected() event handler:
  fn ddl_someList_Selected itm =--we pass the argument passed to the handler
  (
    format "You selected %\n" itm--and do something inside
  )
  --now we can call this custom function from the event hander itself
  on ddl_someList selected itm do ddl_someList_Selected itm
  --and from any other event handlers that want to affect the dropdownlist
  on btn_select1 pressed do ddl_someList_Selected (ddl_someList.selection = 1)
  on btn_select2 pressed do ddl_someList_Selected (ddl_someList.selection = 2)
  on btn_select3 pressed do ddl_someList_Selected (ddl_someList.selection = 3)
)
createDialog testddl_rollout

See Also