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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0223
catsツリービューについて5解決


cats

リンク

2014/2/23(Sun) 11:33:32|NO.60217

今ツリービューを使用するプログラムを作っています。
そこで、アイテムを右クリックするとメニューが開き、
「項目の削除」「項目名の変更」などの操作ができるようにしたいです。
今はstdlibを使わせていただいていますが、アイテムに対する右クリックメニューの
作り方がわかりません。
UhspObjs3というモジュールも利用しようとしましたが、命令が複雑でわかりませんでした。
アイテムへの右クリックの取得はoncmdでできると思うのですが、
どうすればよいか教えてください。



この記事に返信する


fortunehill

リンク

2014/2/23(Sun) 13:13:03|NO.60221

/*ご参考*/

winobj "SysTreeView32","",$200,$50000001,200,200 hh = objinfo(0,2) nn = 0,$FFFF0001,$23,0,0,0,varptr(ss),0,0,0 ss = "Root" sendmsg hh,$1100,0,varptr(nn) oncmd gosub *label,$4E ;_NOTIFY stop *label dupptr NMHDE,lparam,12,4 if (NMHDE(2) == -5) {dialog "Rckick"} if (NMHDE(2) == -3) {dialog "Dclick"} return



fortunehill

リンク

2014/2/23(Sun) 13:47:20|NO.60222

/*蛇足(UhspObjs3の文言見落としたわ恥ずかしい・・・):修正
 上記が利用できる環境ならば
 .../sample/_TreVew.hsp
 .../sample/_MenBar.hsp が参考に成ると思います。
(.../sample/_Mstyle.hsp もポップアップメニュー作成に便利かもしれません)

 最新(UhspObjs3)= http://www12.ocn.ne.jp/~fortune/
*/



cats

リンク

2014/2/23(Sun) 15:10:11|NO.60224

>fortunehill
サンプルと情報をありがとうございます!
stdlibのツリービューに組み込んだところ、
右クリック判定は出来ましたがアイテム(項目)の取得ができません。
どうやら右クリックではアイテムの選択が効かないことが原因のようです。

#include "../stdlib/sysval.as" #include "../stdlib/gblconst.as" #include "../stdlib/winapi32.as" #include "../stdlib/exgeneral.as" #include "../stdlib/extreeview.as" treehwnd=Createtreeview(0,0,0,640,480) treesetitem treehwnd,"TEST",0,2,0,0 : hParent=stat treesetitem treehwnd,"TEST-1",hParent,2,0,0 oncmd gosub *onclk,$4E stop *onclk dupptr NMHDE,lparam,12,4 if (NMHDE(2) == -5) { s="" treegetstr s,treehwnd dialog "項目:"+s } return
右クリックでアイテムを選択できるようにするか、他の解決法があれば教えて下さい。



fortunehill

リンク

2014/2/23(Sun) 22:52:51|NO.60241

/*こんな感じかな?*/

#uselib "user32" #func global ScreenToClient "ScreenToClient" sptr,sptr winobj "SysTreeView32","",$200,$50000001,200,200 :hh = objinfo(0,2) nn = 0,$FFFF0001,$23,0,0,0,varptr(ss),0,0,0 :ss = "Root2" sendmsg hh,$1100,0,varptr(nn) nn = 0,$FFFF0001,$23,0,0,0,varptr(ss),0,0,0 :ss = "Root1" sendmsg hh,$1100,0,varptr(nn) oncmd gosub *label,$4E ;WM_NOTIFY stop *label dupptr NMHDE,lparam,12,4 if (NMHDE(2) == -5) {pp = ginfo_mx,ginfo_my ScreentoClient hh,varptr(pp) zz = pp,pp.1,$E,0 sendmsg hh,$1111,,varptr(zz) ;TVM_HITTES sendmsg hh,$110B,9,zz(3) ;TVM_SELECTITEM(選択させるか否かは自由) nn = $F,zz(3),0,0,varptr(ss),512 ; sendmsg hh,$110C,0,varptr(nn) ;TVM_GETITEMA title "Rclick "+ss} if (NMHDE(2) == -3) {title "Dclick"} return



cats

リンク

2014/2/24(Mon) 14:53:34|NO.60247

>fortunehillさん
ありがとうございます!
これをstdlibに組み込んでみようと思います。



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