SLCT_LSTをダブルクリックで選択確定する
2たんで見た
SLCTBOXのSLCT_LSTで定型文字列を選べるスクリプト組んだんだけど、
マウス直下のウィンドウに貼り付ける手抜き処理なんで、OKボタンを
使わなくてもできるようにしたい。今のトコEnterキーでやっつけてるのだけど、それをダブルクリックで
実行できるようにもしたい。良いやり方あるかな?
実際のとここのケースなら popupmenu
のが楽なのは間違いないんだけど、 SLCT_LST
でダブルクリックして選びたいって思ったこと何度かあるのでじゃあやってみようぜっていう
そいや過去にUWSCでダブルクリックを検知して任意の関数を実行するモジュール書いてたっけ、これ使おう
call DoubleClick.uws list = split("hoge fuga piyo") DoubleClickEvent.SetEvent("ClickOk") // ダブルクリック検知開始 ret = slctbox(SLCT_LST or SLCT_STR, 0, "えらぶ", list) DoubleClickEvent.RemoveEvent() // ダブルクリック検知終了 if ret = -1 then exit msgbox("選んだのは " + token("<#TAB>", ret)) procedure ClickOk id = getid(GET_ACTIVE_WIN) if status(id, ST_CLASS) = "TUslctBox_uwsc" then clkitem(id, "OK") endif fend
はい
DoubleClickEvent
モジュールについては元記事見てもらうとして
ダブルクリックを検知したら ClickOk()
関数が呼ばれます
こいつは単純にダブルクリックが検知されたときに slctbox
がアクティブならOKを押すってもの
ダブルクリックされたときは間違いなくアクティブだろうというすんぽーです
ちなみにボタン以外がダブルクリックされても反応するけどそこはまぁ、紳士協定です
ちゃんとボタンだけで反応するのもできなくもないとは思うので、その場合は ClickOk()
で頑張ります
僕は頑張らないが
あと、 token
使ってるのは複数選択対策です
うっかり複数選択されても一番上のだけ値を返すよっていう
僕はこの小細工をよくやる
実際何度か試してみたけどわりとゴキゲンに動作しますね
いいんじゃないかしら!
まぁきっと popupmenu
使うけども!
広告