SLCT_LSTをダブルクリックで選択確定する

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 使うけども!

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中