質問:
ユーザ インタフェース コントロールのイベント ハンドラは、たとえば、myButton.pressed()、mySpinner.changed 10.0 のように関数として呼び出すことができます。 ただし、dropdownlist コントロールの on selected () イベントは呼び出せません。 これは、この関数を「隠す」、.selected という名前のプロパティがすでに存在するためです。
このメソッドを呼び出す方法はあるでしょうか。
回答:
直接は呼び出せません。 これは既知の制限事項ですが、後方互換性の問題からおそらく今後も修正されません。
回避策として、ハンドラが行う処理を実行する関数を定義し、このカスタム関数を、ハンドラとこのハンドラを呼び出したいその他のコードの両方から呼び出します。
例:
|
rollout testddl_rollout "Dropdownlist Handler"
(
dropdownlist ddl_someList items:#("1","2","3")--これはドロップダウン リストです。
button btn_select1 "Select 1"--これらのボタンは、on selected() ハンドラを置き換える
button btn_select2 "Select 2"--カスタム関数を呼び出すことにより、
button btn_select3 "Select 3"--リストを設定します。
-- これは、通常は on selected() イベント ハンドラで行う
-- 処理を実行するカスタム関数です。
fn ddl_someList_Selected itm =--ハンドラに渡された引数を渡します。
(
format "You selected %\n" itm--内部で何らかの処理を行います。
)
-- 次に、このカスタム関数をイベント ハンドラ自体と
on ddl_someList selected itmdo ddl_someList_Selected itm
-- ドロップダウン リストを操作するその他のイベント ハンドラから呼び出します。
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
|