HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1109
くりダブりクリック6解決


くり

リンク

2006/11/9(Thu) 17:25:56|NO.3313

標準命令のみで、listboxの項目をダブルクリックしたら、
例えばstatにダブルクリックされた項目が返ってくるとかできますか?



この記事に返信する


りさ

リンク

2006/11/9(Thu) 20:15:13|NO.3318

ウィンドウズメッセージを捕まえるのが、一番簡単かもデス。


#define WM_COMMAND 0x0111 // WM_COMMAND を捕まえる oncmd gosub *lbl_WM_COMMAND, WM_COMMAND // リスト lists = "ABC\nDEF\nGHI\nJK\nLMN\nOPQR\nSTU\nVW\nXYZ" // コントロール作成 listbox select, 50, lists stop *lbl_WM_COMMAND if ( ( ( wparam >> 16 ) & 0xFFFF ) == 0x0002 ) { mes "リストの " + select + " 番目の要素が選択されました。" } return



くり

リンク

2006/11/10(Fri) 16:47:53|NO.3341

だけどこれだとlistboxの前に「objsize 200,200」って入力すると、
隙間が開いているところにダブルクリックしても反応してしまいます。
選択したところのみダブルクリックしたら反応するってことはできませんか?



774

リンク

2006/11/11(Sat) 00:31:46|NO.3366

//API等でそういう方法があるのかもしれませんが見つからなかったので・・・


初めにアイテム数を元にobjsizeしてからlistbox作るのはどうでしょうか?


リストボックスを作った後にアイテム数が変わるのなら

MoveWindowでリストボックスのサイズを変えてしまうか、

//listbox+MoveWindowテスト #uselib "user32.dll" #func MoveWindow "MoveWindow" int,int,int,int,int,int randomize list = "ABC\nDEF\nGHI\nJK\nLMN\nOPQR\nSTU\nVW\nXYZ" listbox select,100,list hlist = objinfo_hwnd(0) //ハンドルを取得する pos 0,400 button "サイズ変更",*size button "移動",*move stop *size xsize = rnd(100)+50 : ysize = rnd(150)+50 MoveWindow hlist,x,y,xsize,ysize,1 stop *move //おまけw x = rnd(400) : y = rnd(200) MoveWindow hlist,x,y,xsize,ysize,1 stop

アイテム数とマウス座標から
空欄でクリックしたかどうかチェックするという手もあります


//リストボックス上ではmousex,mouseyが取得できないので・・・ #uselib "user32.dll" #func GetCursorPos "GetCursorPos" int #func ScreenToClient "ScreenToClient" int,int dim point,2 repeat GetCursorPos varptr(point) //カーソルの画面上の座標取得 ScreenToClient hwnd,varptr(point) //クライアント(ウィンドウ)座標に変換 mes ""+point(0)+" "+point(1) wait 25 loop



Kpan

リンク

2006/11/11(Sat) 09:58:50|NO.3370

これはOSにより挙動が違います。
http://smile.poosan.net/perl-bin/hsp/ver3/hsp3.cgi?print+200510/05100029.txt

自分が試せる環境だと下のような感じです。文句はM$にどぞ。(^-^;
XP SP2 → 空白部分でも反応してしまう
98 SE → 文字上でしか反応しない



くり

リンク

2006/11/11(Sat) 13:05:20|NO.3376

マウス座標から取得する技がありましたね。
だけどmousex:mouseyだと取得できないのでginfoをつかいました。
ありがとうございます。



kz3

リンク

2006/11/11(Sat) 16:30:37|NO.3381

>くりさん
>隙間が開いているところにダブルクリックしても反応してしまいます。
>選択したところのみダブルクリックしたら反応するってことはできませんか?

りささんのスクリプトの「*lbl_WM_COMMAND」ラベル以下を次のように変えてみます。

*lbl_WM_COMMAND if ( ( ( wparam >> 16 ) & 0xFFFF ) == 0x0002 ) { pt = ginfo_mx, ginfo_my ScreenToClient lparam, varptr(pt) ; include "user.as" prm = pt.1<<16 | pt.0 sendmsg lparam, 0x01A9, 0, prm ; LB_ITEMFROMPOINT if stat=select: mes "リストの " + select + " 番目の要素が選択されました。" } return

>774さん
>アイテム数とマウス座標から

これをリストボックスにやらせるのが「LB_ITEMFROMPOINT」メッセージです。



ONION software Copyright 1997-2023(c) All rights reserved.